Kendo ui 调用剑道网格列模板的外部html模板

Kendo ui 调用剑道网格列模板的外部html模板,kendo-ui,kendo-grid,Kendo Ui,Kendo Grid,我已经试了很长一段时间,想让它发挥作用 基本上,我是动态地将列和模板分配给剑道网格。每列可以是任何类型。如果类型是“address”类型,那么我将为该列分配一个html模板,以拆分地址字符串并以一种良好的方式显示 我通过创建可能的列类型及其相应模板的映射来实现这一点。问题在于“地址”映射 uiTemplateMap["date"] = "#= kendo.toString(kendo.parseDate(" + fieldName + "), 'MM/dd/yyyy') #"; uiTemp

我已经试了很长一段时间,想让它发挥作用

基本上,我是动态地将列和模板分配给剑道网格。每列可以是任何类型。如果类型是“address”类型,那么我将为该列分配一个html模板,以拆分地址字符串并以一种良好的方式显示

我通过创建可能的列类型及其相应模板的映射来实现这一点。问题在于“地址”映射

 uiTemplateMap["date"] = "#= kendo.toString(kendo.parseDate(" + fieldName + "), 'MM/dd/yyyy') #";
 uiTemplateMap["address"] = eval("kendo.template($('\\#address-template').html())");
“地址模板”定义为

 <script id="address-template" type="text/x-kendo-template">
    # var addr =  ${addresses} ; #
    # var splitaddr = addr.split(','); #
    # for (int i=0; i < splitaddr.length(); i++) { #
        <i> #= splitaddr[i] # </i>
    # } #
 </script>

#var addr=${addresses}#
#var splitaddr=addr.split(',')#
#对于(int i=0;i
我得到一个无效的模板异常。我有两个问题

  • 如何将列值分配给javascript变量?${addresses}分配似乎不起作用
  • 我不想硬编码模板中的“地址”列。是否可以将列名或值传递给模板,如$('#address template').html(columnName)

  • 非常感谢您提供的任何帮助

    您可以访问
    数据[columnName]
    中的列值,其中
    columnName
    是字段名称(字符串),或者,由于模板函数使用带
    块的
    ,只需在
    columnName
    中,您就可以这样定义模板生成器:

    function createAddressTemplateFor(columnName) {
        return "# var address = data['" + columnName + "']; #" + // or: var address = columnName;
            "# var splitaddr = address.split(','); #" +
            "# for (var i = 0; i < splitaddr.length; i++) { #" +
            "<i> #= splitaddr[i] # </i><br />" +
            "# } #";
    }
    
    函数createAddressTemplateFor(columnName){
    返回“#var address=data['”+columnName+“'];#”+//或:var address=columnName;
    #var splitaddr=address.split(',');#+
    “#for(var i=0;i”+
    "# } #";
    }
    
    ()


    如果要使用外部模板,可能必须对名称进行硬编码(因为当前列的属性名称未传递给模板),除非您要修改剑道UI源代码。

    很高兴这有帮助;如果这解决了你的问题,你应该考虑一下。