JqG​​rid:如何在afterSubmit中刷新网格?

时间:2014-04-09 04:43:29

标签: jqgrid

我在寻呼机中有两个按钮,一个用于添加新记录。请参阅以下代码:

$(grid_selector).jqGrid('navGrid', pager_selector, 
    {   
        edit: false,
        add: true,
        addicon : 'icon-plus-sign purple',
        del: true,
        delicon : 'icon-trash red',
        search: false,
        refresh: false,
        view: false,
    },
    null, //no need for edit
    {
        //new record form
        url: "/add",  
        ...
        afterSubmit : function(response, postdata)  {

            // ??? how to refresh the grid

        }
    },
    ...

}

添加记录后,我希望刷新网格。有人能告诉我怎么做吗?

我正在使用本地数据进行测试。

问候。

2 个答案:

答案 0 :(得分:2)

确保您在应用程序中使用更新版本的jqGrid 如果所有其他参数都正确(刷新:true等),您可以使用它来重新加载网格

$(grid_selector).trigger("reloadGrid");

请注意这个条件

由于数据类型已更改为local(loadonce为true),因此不执行重新加载。您需要在afterSubmit函数中手动重新加载网格以进行表单编辑。在触发重载事件之前,需要将数据类型设置为json。

$(grid_selector).jqGrid('setGridParam',{datatype:'json'}).trigger('reloadGrid');

答案 1 :(得分:1)

表单编辑中使用的默认属性为reloadAfterSubmit: true。这意味着jqGrid会触发reloadGrid的{​​{1}}处理。

你写了#34;我正在使用本地数据"。您的问题很难回答,因为您没有发布更多您使用的完整代码。我试着猜你做了什么。因为到目前为止jqGrid不支持本地编辑,所以我认为你的问题存在是因为你使用了afterSubmit选项。如果使用该选项,则jqGrid会在首次加载数据后将原始loadonce: true更改为datatype。换句话说,jqGrid" break"第一次加载数据后连接到服务器("local")。

因此,您只需在jqGrid触发url之前重置原始datatype"json""xml")。相应的代码将包含以下内容:

reloadGrid

以上代码添加"刷新"按钮并使用相同的$(grid_selector).jqGrid("navGrid", pager_selector, { edit: false, addicon : 'icon-plus-sign purple', delicon : 'icon-trash red', search: false, beforeRefresh: function () { $(this).jqGrid("setGridParam", { datatype: "json" }); } }, {}, //no need for edit { //new record form url: "/add", ... afterSubmit: function () { $(this).jqGrid("setGridParam", { datatype: "json" }); } }, ... } beforeRefresh。在路上"刷新"按钮从服务器重新加载数据。我个人认为afterSubmit场景中存在这样的按钮。