【问题标题】:Telerik Kendo ui grid displaying html cell instead of generated html controlTelerik Kendo ui 网格显示 html 单元格而不是生成的 html 控件
【发布时间】:2012-07-04 19:47:26
【问题描述】:

我正在尝试使用来自 asp.net mvc 3 的新 Kendo UI 网格。

我有一个表,该表是从 asp.net mvc 3 中的控制器自动生成的。

并用 Kendo.ui 网格显示它。

但是,我在单元格中使用了 html 代码,而不是 html 控件

例子:

它在单元格中显示:<input checked="checked" class="check-box" disabled="disabled" type="checkb..而不是输入,视图中的代码是@html.input

<a href="/Admin/Edit">Edit</a> | <a href="/Admin/Details">Details</a> | <a href="/Adm而不是链接(视图中的代码是@Html.actionLink)

如何让它编码 html 代码?

这是我的脚本:

$(document).ready(function() {
    $("#calendrierMatch").kendoGrid({

    });
});

谢谢

【问题讨论】:

  • 你能贴出你创建 kendoUI 网格的 Javascript 代码吗?
  • 这是我的脚本:$(document).ready(function() { $("#calendrierMatch").kendoGrid({ }); });

标签: asp.net-mvc-3 kendo-ui


【解决方案1】:

KendoUI Grid 自动对网格的内容进行编码,这就是为什么您会得到文本 <input type= ... 而不是实际的输入控件。

您可以使用encoded 选项(see documentation) 禁用给定列的编码:

encoded: Boolean(default: true) 指定列内容是否 被逃脱。如果数据包含 HTML 标记,则禁用编码。

所以你需要这样的东西:

 $(document).ready(function(){
      $("#grid").kendoGrid({
      //...
        columns: [
           {
               field: "Column containing HTML",
               encoded: false
           }
        ]          
      });
 });

【讨论】:

  • 嗨 nemesv,感谢您的建议,我正在使用 $("#grid").kendoGrid() 创建我的网格,列和数据直接从视图上的表中获取(使用 和 ),为了使用 encoded: false 选项,这意味着每次我需要在 kendoGrid 调用中声明表的所有列?
  • 根据当前版本的文档,没有其他方法可以全局关闭编码。所以恐怕您需要指定所有列,并单独关闭编码...
  • 我试用了最新的 beta 版本,现在我可以得到渲染的 html,但是,即使使用 sortable: true 选项,也无法对列进行排序,我可以看到向上/向下的图标,但是当点击结果什么都没有时,你有没有看到类似的东西?
  • 我还没有尝试过测试版,我不知道为什么排序不起作用,但我认为这是一个不同的问题。
  • 无论如何感谢 nemesv 之前的建议,它会在某个阶段或另一个阶段帮助我
【解决方案2】:

在模型绑定剑道网格 Razor Html 页面中使用此代码

@Html.Kendo().Grid(Model).Name("GridName").Columns(col =>{
col.Bound(m => m.ID);
col.Bound(m => m.Name);
col.Template(@<text>
        @Html.Raw(HttpUtility.HtmlDecode( item.Text))
    </text>);
})

【讨论】:

    【解决方案3】:
    You need to add the template feature  of kendo grid.
    
    In the below code i have created a text box inside the cell of kendo grid.
    
    
     {
         field: "Total",
         title: "Total",
         width: "40px",
         template: "<input type='text'  class=\"quantity_total\"   id='txtTotal_${ItemId}'    
                    name='txtTotal_${ItemId}' maxlength='8'    onkeypress = 'return 
                    fnCheckNumeric_total(event,this.id)'  />"  
    
    },
    

    【讨论】:

      猜你喜欢
      相关资源
      最近更新 更多
      热门标签