我正在尝试将jqGrid与本地数据一起使用,我发现了一些问题:
我正在初始化这样的事情:
function refreshGrid($grid, results)
{
$grid.jqGrid({
data: results,
datatype: "local",
colNames:['#','File', 'Category', 'Line Number', 'Message Text','Detailed'],
colModel:[
{name:'count',index:'count', width:100, resizable: true},
{name:'basename',index:'basename', width:100, resizable: true, classes:['basename']},
{name:'category',index:'category', width:60, resizable: true},
{name:'linenumber',index:'linenumber', width:60, resizable: true},
{name:'text',index:'text',width:400, resizable: true},
{name:'detailed',index:'detailed',width:100,classes:['detailed'], resizable: true }
],
viewrecords: true,
rowNum:100,
rowList:[100,200],
pager: '#debug_errors_pager',
caption:"JSON Example"
});
}
Run Code Online (Sandbox Code Playgroud)
我传入的数据results是一个对象数组.
问题:
1)寻呼机完全关闭.它显示正确的计数,但它实际上不允许我翻阅数据.
2)我无法刷新数据.我正在使用自己的搜索功能来达到我的目标results.我无法弄清楚如何更新现有数据.网格第一次初始化.在后续尝试中,它初始化为空表.
3)我尝试过这样的事情:
$grid.empty() - 因为$ grid对象由jqgrid修饰,所以不起作用.我试图"核"旧网格,然后简单地重新渲染它作为一种解决方法.`$ grid.trigger('reloadGrid') - 不起作用,不知道为什么.
注意:这是使用jQGrid 3.7.
小智 31
你可以使用简单:
jQuery("#list")
.jqGrid('setGridParam',
{
datatype: 'local',
data:mydata
})
.trigger("reloadGrid");
Run Code Online (Sandbox Code Playgroud)
Meg*_*gan 23
我能够实现类似的东西.我的问题的技巧是在更新数据网格参数之前清除数据.假设您的网格在其他地方初始化(使用数据类型:'local'),请尝试:
function refreshGrid($grid, results) {
$grid.jqGrid('clearGridData')
.jqGrid('setGridParam', { data: results })
.trigger('reloadGrid', [{ page: 1}]);
}
Run Code Online (Sandbox Code Playgroud)
问题1:
如果我们为客户端数据定义了网格的寻呼机,则会自动禁用寻呼机中的按钮.换句话说,当前版本的网格不支持客户端分页和搜索.
问题2:你试过了吗:
$("#list").GridUnload();
Run Code Online (Sandbox Code Playgroud)
看到这里gridUnload()和和之间的差异trigger('reloadGrid').
我还没有找到一个很好的文档化方法来更新jqGrid的本地数据,这里是我如何扩展jqGrid来解决我的问题:
$.extend($.fn.jqGrid, { setData: function(data) {
this[0].p.data = data;
return true;
} } );
Run Code Online (Sandbox Code Playgroud)
在此之后,您可以执行以下操作以使用新数据更新jqGrid:
假设您的网格声明如下:
jQuery("#list").jqGrid({ datatype: "local", ... other params ... });
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
jQuery("#list").jqGrid('setData', array_with_new_data);
jQuery("#list").trigger("reloadGrid");
Run Code Online (Sandbox Code Playgroud)
在刷新现有网格上的数据时,以下内容适用于我:
var gridData = [...];
var grid = jQuery('#gridId');
grid.jqGrid('clearGridData');
if( grid.get(0).p.treeGrid ) {
grid.get(0).addJSONData({
total: 1,
page: 1,
records: gridData.length,
rows: gridData
});
}
else {
grid.jqGrid('setGridParam', {
datatype: 'local',
data: gridData,
rowNum: gridData.length
});
}
grid.trigger('reloadGrid');
Run Code Online (Sandbox Code Playgroud)
我必须这样做,因为reloadGrid()调用populate(),populate()调用addLocalData()并将返回值传递给addJSONData(),但是对于treeGrid == true,addLocalData()不返回任何内容,并且addJSONData()后来什么也没做.
| 归档时间: |
|
| 查看次数: |
61397 次 |
| 最近记录: |