2014-07-03 67 views
1

如果我將本地數據(一行)添加到現有的jqgrid,$.jgrid.randId()自動生成的值似乎是錯誤的。我需要新的行ID進一步的行動。jqGrid AddRowData rowId有錯誤的值

var mydata = [ 
    {id: '12', thingy: "abc"}, 
    {id: '34', thingy:"def"}, 
    {id: '56', thingy: 'ghi'} 
]; 

$("#grid").jqGrid({ 
    data: mydata , 
    datatype: 'local', 
    gridview: true, 
    height: 'auto', 
    autoencode: true, 
    rowNum: 3, 
    colModel: [{ 
     name: 'id', 
     width: 60, 
    },{ 
     name: 'thingy', 
     width: 90, 
    }], 
    caption: "Stack Overflow Example", 
    ondblClickRow: function(rowid) { 
     console.log(rowid); // print current row id 
    } 
}); 

$('#UpdateGridButton').click(function(){ 
    var p = $('#grid').getGridParam(); 
    console.log("found gridParamData:", p.data); 
    if (p.data){ 
     var newData = [ 
      {id: '78', thingy: "jkl"} 
     ]; 
     var rowId = $.jgrid.randId(); // new row ID 
     $("#grid").jqGrid('addRowData', rowId, newData); 
     console.log(rowId); // print new row id 
    }  
}); 

看到這個小提琴&控制檯輸出(2X單擊行):http://jsfiddle.net/quK3s/

你看,如果你添加一個新行,行ID是「jqg1」,但實際上它插入一個一行「jqg2 「(用螢火蟲檢查,如果雙擊該行請參閱控制檯輸出)

任何想法如何解決此問題?或者它是一個錯誤?

正如我在這個問題https://stackoverflow.com/a/9218310/2221820看到的,我認爲該功能是錯誤的,它應該是預增量而不是$.jgrid.guid++

有什麼想法?

UPDATE:

我結束了使用

var rowId = $.jgrid.uidPref + (++$.jgrid.guid); 

但任何更好的解決方案/想法,將不勝感激。

回答