如何动态更改kendo ui网格中的值

时间:2013-04-12 07:43:17

标签: jquery kendo-ui kendo-grid

我正在使用kendo 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);                               
       }
   }

然后值正在变化,但值在更改后未传递给控制器​​。

2 个答案:

答案 0 :(得分:8)

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

 dataSource.data()[changedIndex].dirty = true;
 dataSource.sync();

答案 1 :(得分:0)

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

$(&#34;#my_grid&#34;)。data(&#34; kendoGrid&#34;)。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值:  $($($(&#39; #grid table tr [role = row]&#39;)[i])。find(&#34; td&#34;)[11])。text(faculty);

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