Jquery plugins jqGrid—;重新加载数据

Jquery plugins jqGrid—;重新加载数据,jquery-plugins,jqgrid,jqgrid-asp.net,Jquery Plugins,Jqgrid,Jqgrid Asp.net,我正在尝试向数据源中添加一项,然后基于重新加载网格。网格加载良好。调用了几次addItemToGrid,我正在验证是否添加了底层tableSrc对象,但网格保持不变 var tableSrc = { "rows": [ { "title": "Title1", "subtitle": "subTitle", "authors": ["a1", "a2", "a3"] }, { "title": "Title2", "subtitle": "subtitle

我正在尝试向数据源中添加一项,然后基于重新加载网格。网格加载良好。调用了几次
addItemToGrid
,我正在验证是否添加了底层tableSrc对象,但网格保持不变

    var tableSrc = { "rows": [
        { "title": "Title1", "subtitle": "subTitle", "authors": ["a1", "a2", "a3"] },
        { "title": "Title2", "subtitle": "subtitle", "authors": ["X", "Y"] },
        { "title": "Title3", "subtitle": "subTitle", "authors": ["1", "2", "3", "4"]}]
    };

    targetGrid = $("#jqGridElement").jqGrid({
        datastr: tableSrc,
        jsonReader: { repeatitems: false },
        datatype: "jsonstring",
        colNames: ['title', 'subtitle'],
        colModel: [
            { name: 'title', index: 'title', width: 55 },
            { name: 'subtitle', index: 'subtitle'}],
        height: 'auto',

        gridview: true
    });

    function addItemToGrid() {
        tableSrc.rows.push({ "title": "NEW", "subtitle": "HELLO", "authors": ["1", "2", "3", "4"] });
        $("#jqGridElement").trigger('reloadGrid');
        //$("#jqGridElement").jqGrid('reloadGrid');
    }

首先,语句
$(“#jqGridElement”).trigger('GridUnload')
不执行任何操作,因为没有名为
'GridUnload'
的事件。jqGrid当前支持的唯一事件是
'reloadGrid'
。事件支持您感兴趣的其他参数(请参阅)。调用
$(“#jqGridElement”).trigger(“reloadGrid”,[{current:true}])
将刷新网格,但可能导致用户的选择不会更改

如果您需要在“new style API”中调用
GridUnload
,它应该如下所示

$("#jqGridElement").jqGrid('GridUnload');
调用
GridUnload
方法后,将重新创建作为jqGrid基础的
table
元素。因此,如果将
$(“#jqGridElement”)
保存在变量中(
var gridObj=$(“#jqGridElement”)
),则应刷新该值(使用赋值
gridObj=$(“#jqGridElement”)

现在谈谈你的主要问题。如果需要向网格添加新列或在旧网格上创建另一个网格,则方法
GridUnload
非常有用。(参见或作为示例)。例如,如果需要向现有网格添加一行数据,可以使用


了解每一行(
元素)的ID用法对您来说非常重要。如果您不想自己管理ID,可以使用
undefined
作为方法中的
rowid
。在这种情况下,
$.jgrid.randId()
方法将在内部用于为新行生成唯一的id。

看看这个:[jqGrid Solution][1][1]:看起来该链接说要使用:
$(“#jqGridElement”).trigger('gridUnload')清除网格-这似乎没什么用…谢谢你的另一个好答案。我希望以后有人能找到他们,节省我花在解决这些问题上的时间。@Adam Rackis:不客气!之前我想写更多关于填充网格的信息,但我决定不做太长的回答。您是从服务器加载“JSON”数据,还是在客户端动态构建
tablerc
对象?最终用户将单击按钮,发布到web服务,获取JSON对象,然后我希望网格刷新该对象。这就是我通过添加一个新行模拟的结果;最终,我将清除并刷新整个行数组,并告诉网格重新加载。多亏了你,我想我知道如何做到这一点。@Adam Rackis:如果所有数据都是以JSON格式来自服务器,而您不使用
datatype:'JSON'
url:yourServerUrlWichProvideJSON
?这是土生土长的方式。jqGrid就是为此而设计的。在
的内部,单击按钮的事件,您可以调用
$(“#jqGridElement”).trigger('reloadGrid')
。如果希望数据的排序和分页在本地进行,可以使用jqGrid的
loadonce:true
参数。如果将
jsonReader
参数添加到jqGrid,则可以从服务器读取几乎任何JSON输入,并用数据填充网格。如果您发布本机JSON服务器响应,我可以提供帮助。这对post和GET都有效吗?或者我会开始用GET调用我的web方法吗?在任何情况下,除了将数据绑定到网格之外,我还需要处理其他数据,因此我拥有数据的方式可能就是我需要的方向。我确实看到了如何将网格绑定到url,我实际上希望这更适合我的站点。