Reputation: 31313
The following example code will load a jqGrid (this code works) ...
jQuery(document).ready(function () {
var gridData = [
{ col1: 'cell11', col2: 'cell12', col3: 'cell13' },
{ col1: 'cell21', col2: 'cell22', col3: 'cell23' }
];
$('#myGrid').jqGrid({
data: gridData,
datatype: 'clientSide',
colNames: ['Col1', 'Col2', 'Col3'],
colModel: [
{ name: 'col1' },
{ name: 'col2' },
{ name: 'col3' }
]
})
How would I rewrite the example so the gridData is set after the jqGrid is created? I tried this...
jQuery(document).ready(function () {
var gridData = [
{ col1: 'cell11', col2: 'cell12', col3: 'cell13' },
{ col1: 'cell21', col2: 'cell22', col3: 'cell23' }
];
$('#myGrid').jqGrid({
datatype: 'clientSide',
colNames: ['Col1', 'Col2', 'Col3'],
colModel: [
{ name: 'col1' },
{ name: 'col2' },
{ name: 'col3' }
]
})
$('#myGrid')[0].data = gridData;
However the above code doesn't work. Can someone show me how please?
UPDATE: I also tried this for my last line, but it didn't work either...
$('#jqgrid-panel-contents').jqGrid('setGridParam', {data: gridData});
Upvotes: 10
Views: 22863
Reputation: 3694
Solution from Ewan Heming (above) won't work with Free JQGrid (at least with version 4.15.2) when there is data loaded in the grid and you want to modify the data.
however following which was suggested by Oleg (I can't remember where) will work and it will also set your grid pager to 1 in case your new data doesn't have that many pages.
var gParams = $('#myGrid').jqGrid("getGridParam");
gParams.data = data;
$('#myGrid').trigger("reloadGrid", [{page: 1}]);
Upvotes: 0
Reputation: 384
@infantDev If I understood good what you were trying to say: I think you have to do a GridUnload
$("#jqgrid-panel-contents").jqGrid('GridUnload');
before to add the new data
Upvotes: 0
Reputation: 4648
Maybe try reloading the grid afterwards?
$('#jqgrid-panel-contents').jqGrid('setGridParam', {data: gridData}).trigger('reloadGrid');
Upvotes: 18