だから、うまく機能しているjqGridの実装があります。いくつかのデータ行を表示しています。新しいデータが追加されると、グリッドが適宜更新されます。
ただし、グリッドから行を削除しようとすると、欠落している行がクリーンアップされません! 新しい行を追加することは問題ありませんが、削除するとデータが残り、グリッドの表示がバグります。
最初に「clearGridData」を呼び出すと、データが適切にクリーンアップされていることがわかります。ただし、clearGridData を呼び出すと、選択内容/ページが失われます。
http://jsfiddle.net/yNw3C/1766/
var data = [[48803, "DSK1", "", "02200220", "OPEN"], [48769, "APPR", "", "77733337", "ENTERED"]];
$("#grid").jqGrid({
datatype: "local",
height: 250,
colNames: ['Inv No', 'Thingy', 'Blank', 'Number', 'Status'],
colModel: [{
name: 'id',
index: 'id',
width: 60,
sorttype: "int"},
{
name: 'thingy',
index: 'thingy',
width: 90,
sorttype: "date"},
{
name: 'blank',
index: 'blank',
width: 30},
{
name: 'number',
index: 'number',
width: 80,
sorttype: "float"},
{
name: 'status',
index: 'status',
width: 80,
sorttype: "float"}
],
caption: "Stack Overflow Example"
});
var names = ["id", "thingy", "blank", "number", "status"];
var mydata = [];
for (var i = 0; i < data.length; i++) {
mydata[i] = {};
for (var j = 0; j < data[i].length; j++) {
mydata[i][names[j]] = data[i][j];
}
}
for (var i = 0; i <= mydata.length; i++) {
$("#grid").jqGrid('addRowData', i + 1, mydata[i]);
}
$('#UpdateGridButton').click(function(){
mydata[0].status = "CLOSED";
delete mydata[1];
//If I add this -- I can refresh grid data properly, but I lose my selection.
//$('#grid').clearGridData();
$("#grid").jqGrid('setGridParam', { data: mydata});
$("#grid").trigger('reloadGrid', [{current: true}]);
});
jqGrid によって暗黙的にサポートされている両方の長所はありますか? または、カスタム ロジックを記述する必要がありますか?