2016-06-21 22 views
0

こんにちは、私はデータ型とjqGridを使用しています:JqGrid更新特定の行

「をjsonstring」今、私は最初の列の値に基づいて特定の行を更新します。 私は

JqGrid定義

$("#grid").empty().jqGrid({ 
        datatype: 'jsonstring', 
        datastr: { rows: outputStr }, 
        colNames: ['EmpName', 'Val1', 'Val2'], 
        colModel: [ 
           { name: 'EmpName', classes: 'EmpName', index: 'EmpName', width: 100, header: 'Currency' }, 
           { name: 'Val1',classes: 'Val1', index: 'Val1', width: 160 }, 
           { name: 'Val2', classes: 'Val2',index: 'Val2', width: 50 }, 
jsonReader: { 
         repeatitems: false 
        }, 


        rowNum: 10, 
        pager: '#pager', 
        viewrecords: true, 
        hoverrows: false, 
        caption: "" 
       }).navGrid('#pager', 
        { search: true, edit: false, add: false, del: false, refresh: false }, {}, {}, {}, 
        { recreateFilter: true, overlay: true, multipleSearch: true, multipleGroup: true } 
       ); 

 

    
    Johny 122 3123 
    Tom 3123 5856 
    Susan 124 434 
    Cetra 242 2111 
    

これは、グリッド内のサンプルデータである、と私のグリッドデータを考えてみましょう何を意味。現在、更新されたデータを取得する関数があり、グリッドデータ全体ではなく更新されたデータだけです。私はすべてのヘルプは本当に感謝され

function getDetailUpdate(key, value) 
{ 
var data = JSON.parse(value); 
       var row = $('#grid tr:contains(' + key + ')'); //here I get I am getting update data for who, e.g. 'Cetra' 

       var rowVal = $(row).closest('tr').attr('id'); //Here I get the row id 
       for (let i in data) { 
        // Below statement is not working 
        $("#grid").jqGrid('setRowData', row, { 'Val1': data[1], 'Val2': data[0]}); 

//Below statement works and updates the changes but it is not updating in proper row cell, I have also set class names for the three td, and which value to update(which cell) I am getting in 'i') 
        $(row).closest('tr').children('td.' + i).text(data[i]); 
       } 
} 

LIKE「CETRA」のアップデートがあった場合、私は「CETRA」の更新を受け取るだけ

JS関数は見え意味します。おかげ

+1

あなたが行IDへのアクセスを持っていますか?最善の方法は、htmlをハッキングする代わりにこれを使用することです。 var rowData = $( '#my-jqgrid-table')。jqGrid( 'getRowData'、rowId); rowData.Val1 = '12321';$( '#my-jqgrid-table')。jqGrid( 'setRowData'、rowId、rowData); –

答えて

1

代わりの

var row = $('#grid tr:contains(' + key + ')'); 

を使用して私はによって提案されたように、これは、TRのIDを見つけることによって、これを行うの

代替方法を正常に動作している

var row = $("td").filter(function() { 
         return $(this).text() == key; 
        }).closest("tr"); 

を使用しています@Amete Blessedは、より良いアプローチです。

var rowId = $(row).closest('tr').attr('id'); 
var rowData = $('#my-jqgrid-table').jqGrid('getRowData', rowId); 
rowData.Val1= '12321'; 
$('#my-jqgrid-table').jqGrid('setRowData', rowId, rowData) 

はそれが役に立てば幸い誰か

関連する問題