【发布时间】:2018-07-18 09:54:24
【问题描述】:
对于我要添加的功能,我在同一页面上使用了几个不同的网格。所有这些网格都应该能够影响“删除”、“编辑”和“创建”按钮执行的代码。
为了分隔网格,我可以使用它们的名称,但这对于子网格来说是相当有问题的。我目前使用的代码如下:
function deleteButton()
switch(selectedGrid) {
case $("#GridA").data("kendoGrid"):
log("A"); break;
case $("#GridB").data("kendoGrid"):
log("B"); break;
}
selectedGrid 存储了一个网格,用于确定要执行的函数。 从这个网格中,我更愿意提取模型(名称)并将其用作 switchcase 变量。结果看起来像这样:
function deleteButton()
switch(selectedGrid.Model) {
case 'modelA':
log("A"); break;
case 'modelB':
log("B"); break;
}
目前我使用日志而不是函数,但想法是一样的。我选择这种方法的原因是因为多个网格使用相同的模型,并且应该调用相同的案例。
剑道网格中调用函数设置 selectedGrid 变量的代码:
.Event(event => event.Change("function(){onRowSelectGrid('grid', 'model');}"))
页面js中用于设置selectedGrid变量的代码:
function onRowSelectGrid(datagrid, model) {
if (typeof (selectedGrid) !== 'undefined' && selectedGrid !== $("#" + datagrid).data("kendoGrid")) {
//Remove rowselection from the previous grid
selectedGrid.select().removeClass("k-state-selected");
}
var grid = $("#" + datagrid).data("kendoGrid");
selectedGrid = grid;
}
我知道这不是您每天都会遇到的情况,所以如果唯一的解决方案是为每个网格设置单独的按钮,我会理解的。但是,我个人更喜欢所有网格都可以使用的动态代码。
如果有任何问题或需要更多解释,请告诉我。如果有办法以某种方式使用名称(包括子网格的名称),我肯定想看看这样的解决方案。
【问题讨论】:
标签: asp.net-mvc telerik kendo-grid