kendo-ui 网格列模板函数字段名称

标签 kendo-ui telerik kendo-grid kendo-template

我想知道模板函数中的字段名称是什么:

{ 
field: "country", 
template: function(e){
               var tmp  = "";
               var guid     = kendo.guid();
               $.each( e.country, function( key, value ) {
                  tmp += '<span class="xyz">' + value.text + '</span>';
               });
               return tmp;
          }, 
}

示例:Associative array in grid cell

我的模板中没有字段名称“country”:function(e)。模板函数中只有字段数据。 是否有一种方法,例如 kendo.guid(),我可以在函数中使用字段名称“country”作为示例。

最佳答案

看看这是否满足您的需求:

{
    field: "country",
    title: "Country",
    template: function(e, field = "country") {
        console.log("Field name:", field);
        console.log(e[field]);
        return e.country.reduce((prev, current) => prev + '<span class="k-button" style="line-height:1.25em; cursor:default;">' + current.text + '</span>', "");
    },
}

您可以在代码片段中查看如何使用它的示例。

<!DOCTYPE html>
<html>
<head>
    <style>html { font-size: 14px; font-family: Arial, Helvetica, sans-serif; }</style>
    <title></title>
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.3.1026/styles/kendo.common.min.css" />
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.3.1026/styles/kendo.default.min.css" />
    <link rel="stylesheet" href="https://kendo.cdn.telerik.com/2017.3.1026/styles/kendo.default.mobile.min.css" />

    <script src="https://kendo.cdn.telerik.com/2017.3.1026/js/jquery.min.js"></script>
    <script src="https://kendo.cdn.telerik.com/2017.3.1026/js/kendo.all.min.js"></script>
    

</head>
<body>

<div id="example">
    <div id="grid"></div>
      <script id="noDataTemplate" type="text/x-kendo-tmpl">
        <div>
            No data found. Do you want to add new item - '#: instance.input.val() #' ?
        </div>
        <br />
        <button class="k-button" onclick="addNew('#: instance.element[0].id #', '#: instance.input.val() #')">Add new item</button>
    </script>
    <script>
        function getTemplate(e, fieldName) {
            if (fieldName === "country") {
              	return e.country.reduce((prev, current) => prev + '<span class="k-button" style="line-height:1.25em; cursor:default;">' + current.text + '</span>', "");
            } else {
                return e[fieldName];
            }
        }
      
        $(document).ready(function () {
           var data = [
                      {
                        'id':'wpErpOs_1', 
                       'name': 'Rolf', 
                       'country': [{ 'text':'Schweiz','id':'1'}], 
                       'flag':false
                      }, {
                        'id':'wpErpOs_2', 
                       'name': 'Hans', 
                       'country': [
                                    { 'text':'Deutschland','id':'2'},
                                    { 'text':'Schweiz','id':'1'},
                         						{ 'text':'Österreich','id':'3'}
                                   ], 
                       'flag':false
                      }, {
                        'id':'wpErpOs_3', 
                       'name': 'Esther', 
                       'country': [{ 'text':'Schweiz','id':'1'}], 
                       'flag':false
                      }, {
                        'id':'wpErpOs_4', 
                       'name': 'Daniela', 
                       'country': [{ 'text':'Österreich','id':'3'}], 
                       'flag':false
                      }
                    ];
          
          	var dataSource = new kendo.data.DataSource({
                            transport: {
                                read:  function(e){
                                   e.success(data); 
                                },
                                update:function(e){
                                   e.success(); 
                                },
                                destroy: function(e){
                                   e.success(); 
                                },
                                create: function(e){
                                   e.success(); 
                                },
                                parameterMap: function(options, operation) {
                                    if (operation !== "read" && options.models) {
                                        return {models: kendo.stringify(options.models)};
                                    }
                                }
                            },
                            pageSize: 20,
                            schema: {
                                model: {
                                    id: "id",
                                    fields: {
                                        id: { editable: false, nullable: true },
                                        name: { validation: { required: true } },
                                        country: { type: "object" },
                                        flag: { type: "boolean" }
                                    }
                                }
                            }
                        });

          
            $("#grid").kendoGrid({
                dataSource: dataSource,
              	toolbar: ["create"],
                columns: [
                  {
                    field: "name",
                    title: "Name",
                    template: function(e) {return getTemplate(e, "name");}
                }, {
                    field: "country",
                    title: "Country",
                  	template: function(e) {return getTemplate(e, "country");}
                }, {
                    field: "flag",
                    title: "Flag",
                  	editor: wpErpOs_GridBoolean,
                  	template: function(e) {return getTemplate(e, "flag");}
                },
               ],
               editable: "popup",
            });
        });


      
      function wpErpOs_GridBoolean(container, options){
        var guid = kendo.guid();
        $('<input class="k-checkbox" id="' + guid + '" type="checkbox" name="Discontinued" data-type="boolean" data-bind="checked:Discontinued">').appendTo(container);
        $('<label class="k-checkbox-label" for="' + guid + '">&#8203;</label>').appendTo(container);
      };
    </script>
</div>
</body>
</html>

关于kendo-ui 网格列模板函数字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48250013/

相关文章:

javascript - 打开或关闭分组

javascript - 更改堆栈条形图中的起点

javascript - 为什么我的 Kendo Grid 的模型计算字段显示函数的代码?

javascript - Kendo grid 使用编码字符导出某些语言的 header

asp.net-mvc - Knockout-Kendo dropdownlist Ajax observableArray 获取选中项名称

sql-server - SET FMTONLY OFF 对具有动​​态查询的存储过程的影响

asp.net - Bootstrap 是否与 ASP.NET Telerik 控件兼容?

kendo-ui - 如何在Kendo UI Grid中动态更改页面大小

Angular2 typescript - kendo ui 网格列模板(单击)不起作用

c# - Kendo UI 添加新记录