通过模型定义剑道网格

时间:2018-07-18 09:54:24

标签: asp.net-mvc telerik kendo-grid

对于要添加的功能,我在同一页面上使用了两个不同的网格。所有这些网格都应该能够影响“删除”,“编辑”和“创建”按钮执行的代码。

为了分隔网格,我可以使用它们的名称,但这对于子网格来说是个问题。我当前使用的代码如下:

function deleteButton()
   switch(selectedGrid) {
      case $("#GridA").data("kendoGrid"):
         log("A"); break;
      case $("#GridB").data("kendoGrid"):
         log("B"); break;
   }

selectedGrid存储了一个网格,该网格应确定要执行的功能。 从该网格中,我希望提取模型(名称)并将其用作切换案例变量。结果看起来像这样:

function deleteButton()
  switch(selectedGrid.Model) {
      case 'modelA':
         log("A"); break;
      case 'modelB':
         log("B"); break;
   }

当前,我使用日志而不是函数,但是想法是相同的。之所以选择这种方法,是因为多个网格正在使用相同的模型,并且应该调用相同的情况。

kendo网格中的代码,用于调用该函数来设置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;
}

我知道这不是您每天的情况,因此,如果唯一的解决方案是为每个网格设置单独的按钮,那么我会理解。但是,就我个人而言,我更希望拥有可以在所有网格中使用的动态代码。

如果有任何疑问或需要更多说明,请告诉我。如果有一种方法可以在某种程度上使用名称(包括子网格的名称)的情况下,那么我肯定想看看这种解决方案。

1 个答案:

答案 0 :(得分:0)

好的,这可能不是最好的解决方案,但它可以工作。我所做的是在代码中添加了一些代码,以保存selectedgrid。

selectedGrid = grid;

通过在变量中添加“模型”以指示网格的模型:

selectedGrid.model= model;

这样,当通过按钮调用网格时,我可以调用model变量以指示应该使用哪种方法。

function deleteButton()
  switch(selectedGrid.model) {
      case 'modelA':
         log("A"); break;
      case 'modelB':
         log("B"); break;
   }

希望这可以帮助遇到相同问题的任何人。