2013-04-12 42 views
5

我正在使用kendo ui网格。在这我已经使用批处理模式来保存值。如果我在一行中更改记录,那么相应行的值也会被更改,当我们单击保存时,这两个字段将被保存到数据库中。如何动态更改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);        
     } 
    } 

然后观念正在转变,但值不传递给控制器​​,它已经改变了。

回答

7

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

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

谢谢。我们可以知道kendo ui网格的保存事件发生了哪些变化。 – Pa1

+0

抱歉我没有关注你的问题? – Vojtiik

+0

这两行代码给我一个错误 –

0

只需设置Kendo网格中的数据值即可。 (“#my_grid”)。data(“kendoGrid”)。dataSource.data()[rowindex] .columnName = newValue;

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

我写了这个:

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值只有: $($($( '#网格表TR [角色=行]')[1])找到(” TD“)[11])文本(教师)。

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