我有一个KendoGrid列List
,它是一个字符串列表和一个JS函数,它遍历它并使用一个简单的模板。如果我单击工具栏上的按钮,会出现错误:List
未定义。但该列与按钮无关,它们没有任何连接方式。
Kendo Column + Button
//..rest of the grid
columns.Bound(od => od.List).Width(150).ClientTemplate("#=generateTemplate(List)#");
.ToolBar(toolbar => toolbar.Create().Text("Add"))
....
我的Js功能
function generateTemplate(List) {
var template = "<ul>";
for (var i = 0; i < List.length; i++) {
template = template + "<li>" + List[i] + "</li>";
}
return template + "</ul>";
}
我的模特
[Display(Name ="List")]
public List<string> List { get; set; }
答案 0 :(得分:0)
问题是list属性的initialisation
中的一个简单问题。
当您单击添加按钮时,网格将根据您提供的定义设置新模型。因此,如果您还没有定义该属性,那么如果它不是standard
属性,则它默认为null(来自内存)。字符串,数字,日期时间等。
因此,当您单击添加时,它会尝试将模板应用于列表属性,如果您还没有给出默认值。例如。新的List然后该值将为null,因为您没有检查您的javascript函数来测试列表是null
还是undefined
,它会爆炸错误。
所以我建议在你的js中应用一个空值列表检查,如下所示:
function generateTemplate(List) {
var template = "<ul>";
if (list === null || list === undefined) {
template = template + "<li>N/A</li>";
} else {
for (var i = 0; i < List.length; i++) {
template = template + "<li>" + List[i] + "</li>";
}
}
return template + "</ul>";
}
作为附注,虽然您已经说过按钮和列没有连接,但它们是由于网格在初始化模型并将其绑定到当前行时使用的MVVM框架。
任何问题都让我知道,我会相应地更新我的答案。