2013-04-12 13 views
5

Używam siatki kendo ui. W tym używam tryb wsadowy, aby zapisać wartości. Jeśli zmienię rekord w jednym wierszu, wówczas wartość z odpowiednim wierszem również zostanie zmieniona, a po kliknięciu na zapis, oba pola zostaną zapisane w bazie danych.Jak dynamicznie zmieniać wartości w sieci kendo ui

Na przykład. Mam siatkę taką jak:

Integer Value 
    1   First 
    2   Second 
    3   Third 
    4   Fourth 

Jeśli zmienię wartość od 1 do 4, wówczas 4 zostaną zmienione, a wartości również zmieniają się dynamicznie. Mam na myśli to, że chcę tutaj wymienić 1 i 4. Mogę również zmienić wszystkie pozostałe pola, ale ostatecznie wszystkie zapisy muszą zostać zapisane w bazie danych. Próbowałem jak

Ten kod będzie w funkcji zmian siatki

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);        
     } 
    } 

Następnie wartości są zmieniającym ale wartości nie przechodzą do sterownika po jego zmianie.

Odpowiedz

7

Jeśli chcesz odtwarzać dane bezpośrednio, musisz oznaczyć rekordy, które zmienisz jako zabrudzone.

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

Dziękuję. I czy możemy wiedzieć, co zmieniło się na zdarzeniu save kendo ui grid. – Pa1

+0

Niestety nie podążam za Twoim pytaniem? – Vojtiik

+0

Oba te wiersze kodu dają mi błąd –

0

Po prostu ustaw wartość danych z siatki Kendo.

$ ("# my_grid") .danych ("kendoGrid"). DataSource.data() [rowindex] .columnName = nowaValue;

W moim projekcie zmieniłem wartość mojego wiersza siatki Kendo z nazwą kolumny = fclty_cd na liście rozwijanej.

pisałem tak:

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); 
     } 
    } 
} 

Linia ta zmienia wartość UI tylko:. $ ($ ($ ('# stół siatki tr [role = wiersz]') [i]) znajdują (” td ") [11]). tekst (wydział);

Ta linia zmienia wartość wewnątrz siatki danych Kendo: $ ("# my_grid") .danych ("kendoGrid"). DataSource.data() [rowindex] .columnName = nowaValue;

Powiązane problemy