2013-04-12 40 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;