我有一个 ASP.NET MVC Kendo Grid,可以保存列顺序和可见性,类似于此示例
网格选项保存到数据库中。现有选项引用我想要删除的特定列。在我的 C# 类中删除此列会导致网格在网格加载时失败并出现错误:
ReferenceError:ColumnName 未定义
在评估时(在编译时评估(kendo.all.js:234:30),:3:3247)
在 init._rowsHtml (kendo.all.js:70687:37)
在 init._renderContent (kendo.all.js:71510:34)
ColumnName 是列客户端模板中使用的属性,如下所示:#= ColumnName #
是否可以在
setOptions
通话期间默默地解决此类差异?最好自动删除不属于当前网格模型的列。或者也许有一个选项可以在 setOptions
期间忽略客户端模板?
目前,我只看到两个不好的选择 - 始终删除所有用户的持久设置以确保每个人都是最新的,或者编写一个迁移函数,该函数将使用选项对象并通过删除过时的列根据当前模式对其进行修改。
我发现我可以使用它们来重新排序和/或隐藏网格中的列,而不是“盲目”应用可能无效的选项。所以我使用这个代码而不是
grid.setOptions(options)
,
options.columns.forEach(function (e, i) {
let gridColumn = grid.columns[i];
if (gridColumn && gridColumn.field !== e.field) {
let gridColumnByField = grid.columns.find(x => x.field === e.field);
if (gridColumnByField) {
grid.reorderColumn(i, gridColumnByField);
}
}
if (e.hidden) {
grid.hideColumn(e.field);
}
});