我的案例是一个搜索窗口,其中包含大约20个属性,用户可以选择指定搜索条件。每个属性都有一个相应的复选框,切换该属性是否包含在搜索结果中。搜索结果随后显示在kendo网格中。
以下是简化的代码,用于说明问题(kendo ui完整版本2012.2.710):
<input type="checkbox" onclick="fnShowHide(1);" name="showSearchColumn" id="checkShowField1" />
<div id="example" class="k-content">
<div id="kendoGridTest"></div>
</div>
<script>
function fnShowHide( iCol )
{
$('#kendoGridTest').data("kendoGrid").options.columns[iCol].hidden = false;
$('#kendoGridTest').data("kendoGrid").refresh();
}
</script>
从搜索返回数据的MVC3控制器方法是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
控件,我希望网格刷新并显示所有三列。但它没有这样做。 fnShowHide()
不能完成任务。我必须承认,在VS调试时,我在QuickWatch窗口中寻找任何类型的Columns集合。
fnShowHide
中的集合包含从初始化网格时的正确数据,并且我能够操纵.hidden
属性,但是网格仍然无法显示该列。我还有点困惑动态隐藏/显示列是否受支持,但这个Telerik员工接受的答案看起来很有前途。