2016-06-21 3 views
0

안녕하세요 'jsonstring'있는 jqGrid 업데이트 특정 행

는 이제 첫 번째 열의 값을 기준으로 특정 행을 업데이트합니다. 내가

있는 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]); 
       } 
} 

처럼 내가 'CETRA'에 대한 업데이트가있을 때, 나는 'CETRA'에 대한 업데이 트를받을 의미는

JS 기능이 보인다. 에 의해 제안 감사

+1

당신이 행 아이디에 액세스 할 수 있습니까? 가장 좋은 방법은 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) 

는 희망이 도움이 사람