来自 ClientTemplate 的列未定义
Column from ClientTemplate undefined
我有一个 Kendo 网格列 List
,它是一个字符串列表和一个遍历它并使用简单模板的 JS 函数。发生的情况是,如果我单击工具栏上的按钮,则会出现错误:List
未定义。但是该列与按钮无关,它们没有任何联系。
Kendo 列 + 按钮
//..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; }
问题是列表 属性 的 initialisation
中的一个简单问题。
当您点击添加按钮时,网格会根据您给它的定义设置您的新模型。因此,如果您尚未定义 属性,那么如果它不是 standard
属性,则默认情况下它将为 null(来自内存),例如字符串、数字、日期时间等
因此,当您单击“添加”时,它会尝试将模板应用到列表 属性,如果您没有为其指定默认值。例如。 new 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 框架。
有任何问题请告诉我,我会相应地更新我的答案。
我有一个 Kendo 网格列 List
,它是一个字符串列表和一个遍历它并使用简单模板的 JS 函数。发生的情况是,如果我单击工具栏上的按钮,则会出现错误:List
未定义。但是该列与按钮无关,它们没有任何联系。
Kendo 列 + 按钮
//..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; }
问题是列表 属性 的 initialisation
中的一个简单问题。
当您点击添加按钮时,网格会根据您给它的定义设置您的新模型。因此,如果您尚未定义 属性,那么如果它不是 standard
属性,则默认情况下它将为 null(来自内存),例如字符串、数字、日期时间等
因此,当您单击“添加”时,它会尝试将模板应用到列表 属性,如果您没有为其指定默认值。例如。 new 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 框架。
有任何问题请告诉我,我会相应地更新我的答案。