5

我正在使用剑道 ui 网格。在那我已经使用批处理模式来保存值。如果我在一行中更改记录,则相应行的值也将更改,当我们单击保存时,两个字段都将保存到数据库中。

例如。我有一个像这样的网格:

  Integer    Value
   1         First
   2         Second
   3         Third
   4         Fourth

如果我将 1 的值更改为 4,那么 4 将被更改,并且值也会动态更改。我的意思是我想在这里交换 1 和 4。而且我也可以更改剩余的所有字段,但最后所有记录都必须保存到数据库中。我试过像

此代码将在网格更改功能中

 var grid = $('#grid').data("kendoGrid");
 var selectedRow = grid.select();
 var selectedRowIndex = selectedRow.index();
 console.log(selectedRowIndex);

 var firstItem = dataSource.data()[selectedRowIndex];

 var datalength = dataSource.data();
 for (var i = 0; i < datalength.length; i++)
   {
     var dataItem = datalength[i].id;
     if (dataItem == firstItem.get('id'))
       {                                
         var secondItem = dataSource.data()[i];                                
         secondItem.set('id', dataItem);                               
       }
   }

然后值正在改变,但值在改变后没有传递给控制器​​。

4

2 回答 2

8

如果您想直接使用数据,则需要将您更改的记录标记为脏记录。

 dataSource.data()[changedIndex].dirty = true;
 dataSource.sync();
于 2013-04-12T11:35:45.863 回答
1

只需设置剑道网格中的数据值。

$("#my_grid").data("kendoGrid").dataSource.data()[rowindex].columnName=newValue;

在我的项目中,我在下拉更改中使用列名 = fclty_cd 更改了 Kendo 网格行的值。

我写了这个:

 function onChange(e) {
    var fromContactNumber = parseFloat($('#fromContactNumber').val());
    var toContactNumber = parseFloat($('#toContactNumber').val());
    var length = $('#grid table tr[role=row]').length;
    var faculty = $('#ddl_Faculty').val();
    for (var i = 1; i < length; i++) {
        var num = parseFloat($($('#grid table tr[role=row]')[i]).find("td")[4].innerText);
        if (num >= fromContactNumber && num <= toContactNumber) {
            $("#grid").data("kendoGrid").dataSource.data()[i - 1].fclty_cd = faculty;
            $($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty);
        }
    }
}

此行仅更改 UI 值: $($($('#grid table tr[role=row]')[i]).find("td")[11]).text(faculty);

此行更改 Kendo 数据网格中的值: $("#my_grid").data("kendoGrid").dataSource.data()[rowindex].columnName= newValue;

于 2016-04-01T05:42:40.897 回答