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 の剣道グリッド行の値を変更しました。

私はこれを書きました:

 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 に答える