jqGrid刷新本地数据(JSON对象)

2021/01/24 08:11 · jquery ·  · 0评论

我正在尝试将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"
 });
}

我传入的数据results是一个对象数组。

问题:

1)寻呼机完全关闭。它显示正确的计数,但实际上并不能让我翻阅数据。

2)我无法刷新数据。我正在使用自己的搜索功能找到我的results我不知道如何更新现有数据。网格第一次初始化。在随后的尝试中,它将初始化为一个空表。

3)我尝试过类似的事情:

$grid.empty()-无效,因为$ grid对象由jqgrid装饰。我正在尝试“核对”旧网格,并只是将其重新呈现为一种解决方法。$ grid.trigger('reloadGrid')-不起作用,不知道为什么。

注意:这是使用jQGrid 3.7。

您可以使用简单的方法:

jQuery("#list")
    .jqGrid('setGridParam',
        { 
            datatype: 'local',
            data:mydata
        })
    .trigger("reloadGrid");

我能够实现类似的目标。我这个问题的窍门是在更新数据网格参数之前清除数据。假设您的网格在其他地方初始化(数据类型为“ local”),请尝试:

function refreshGrid($grid, results) {
    $grid.jqGrid('clearGridData')
        .jqGrid('setGridParam', { data: results })
        .trigger('reloadGrid', [{ page: 1}]);
}

问题1:

如果我们使用客户端数据为网格定义了一个寻呼机,则寻呼机中的按钮将自动禁用。换句话说,当前的网格版本不支持客户端分页和搜索。

本地数据

问题2:您是否尝试过:

 $("#list").GridUnload();

有关之间的区别,请参见此处gridUnload()trigger('reloadGrid')

我还没有找到记录更新jqGrid本地数据的好方法,这是我扩展jqGrid来解决我的问题的方法:

$.extend($.fn.jqGrid, { setData: function(data) {
    this[0].p.data = data;
    return true;
} } );

之后,您可以执行以下操作以使用新数据更新jqGrid:

假设您的网格是这样声明的:

    jQuery("#list").jqGrid({ datatype: "local", ... other params ... });

那么您可以执行以下操作:

jQuery("#list").jqGrid('setData', array_with_new_data);
jQuery("#list").trigger("reloadGrid");

PS看到有关如何从网格中获取所有数据的链接检索网格的内容

在刷新现有网格上的数据时,以下对我有用:

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');

我必须这样做,因为reloadGrid()调用populate(),populate()调用addLocalData()并将返回值传递给addJSONData(),但是对于treeGrid == true,addLocalData()不返回任何内容,而addJSONData()随后什么也不做。

如果您使用的是本地数据,则应jsonjqGrid
属性中提及您的本地数据
setGridParam

 jQuery("#list")
        .jqGrid('setGridParam', {
        datatype: 'local',
        data:results //json object
    });

重新加载jqgrid您可以使用以下方法。

 jQuery("#list").trigger("reloadGrid");
本文地址:http://jquery.askforanswer.com/jqgridshuaxinbendishujujsonduixiang.html
文章标签: ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!