使用流畅的客户端模板for循环构建Kendo UI Grid

时间:2016-01-29 21:01:30

标签: kendo-ui kendo-grid

我使用流畅的网格构建器构建了一个Kendo网格。在我的一个客户端模板中,我需要迭代正在返回的集合。这是可疑线:

c.Bound(x => x.EventFormats).Width(300).ClientTemplate("# if(EventFormats != undefined && EventFormats.length > 0){ for(var formatIndex=0; formatIndex < EventFormats.length; formatIndex++){ console.log(i) } } #").EditorTemplateName("Formats");

问题在于,当我引入for循环时,所有地狱都会破裂并且循环数十万次(在300k之后我放弃并杀死了这个过程)。

如果我这样做:

c.Bound(x => x.EventFormats).Width(300).ClientTemplate("# if(EventFormats != undefined && EventFormats.length > 0){ console.log(EventFormats.length) } #").EditorTemplateName("Formats");

它正确地返回了我在集合中期待的项目数。只有4个正在返回的记录将以集合开头,并且任何集合中的最大项目数为2(尽管可能更多)。

当我介绍for循环时,我不确定为什么它会失去它,并且非常感谢任何见解。

以下是生成的JSON对象: [{ "Id":85, "FormatTypeId":34, "Name":"35mm", "Created":"/Date(1447265241983)/", "CreatedBy":"system", "Modified":null, "ModifiedBy":null, "FormatType":null }, { "Id":83, "FormatTypeId":34, "Name":"16mm", "Created":"/Date(1447265241737)/", "CreatedBy":"system", "Modified":"/Date(1453243258067)/", "ModifiedBy":"system", "FormatType":null }]

1 个答案:

答案 0 :(得分:0)

我不完全确定为什么它循环300k +次,但我确实提出了一个可行的解决方案。

我的KendoGrid模板现在有这一行:

c.Bound(x => x.Formats).Width(300).ClientTemplate("#=$.generateFormatList(Formats)#");

然后在我的JS文件中,我只是写了generateFormatList函数:

$.generateFormatList = function (formats) {
    var template = '';
    if (formats != null) {
        for (var i = 0; i < formats.length; i++) {
            if (i !== 0) {
                template += ", ";
            }
            template += formats[i].Name;
        }
    }
    return template;
}

这就像一个冠军。不确定为什么,但显然Kendo无法在for内部处理ClientTemplate循环。