我的案例是一个包含大约20个属性的搜索窗口,用户可以在其中选择指定搜索条件.每个属性都有一个相应的复选框,如果道具包含在搜索结果中,则会切换.然后搜索结果显示在kendo网格中.
应该说明问题的简化代码(kendo ui complete ver.2012.2.710):
function fnShowHide( iCol )
{
$('#kendoGridTest').data("kendoGrid").options.columns[iCol].hidden = false;
$('#kendoGridTest').data("kendoGrid").refresh();
}
MVC3-controller方法从搜索返回的数据类型为JsonResult(以下面的jsonResultSearchResult给出):
$('#kendoGridTest').kendoGrid({
dataSource: jsonResultSearchResult,
schema: {
model: {
fields: {
FirstName: { type: "string" },
LastName: { type: "string" },
Address: { type: "string" }
}
}
},
sortable: true,
resizable: true,
columns: [{
field: "FirstName",
width: 90,
title: "First name"
},
{
field: "LastName",
width: 120,
hidden: true,
title: "Last name"
},
{
field: "Address",
width: 140,
title: "Adr"
}
]
});
执行搜索后,网格将填充正确的数据,并且LastName确实已隐藏.但是如果用户现在检查checkShowField1控件,我希望网格刷新所有三个col可见.它不是. fnShowHide()不能完成这项工作.
我必须承认,在VS中调试时,我在QuickWatch窗口中寻找任何类型的Columns集合. fnShowHide中的集合包含来自网格初始化时的正确数据,并且我能够操纵.hidden属性,但网格仍然不显示列.