jqGrid-Reloading数据

时间:2011-08-31 17:12:08

标签: jquery-plugins jqgrid jqgrid-asp.net

我正在尝试向我的数据源添加项目,然后根据this answer重新加载网格。网格加载很好。 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');
    }

1 个答案:

答案 0 :(得分:2)

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

如果您需要在“新样式API”中调用GridUnload,它应该看起来像

$("#jqGridElement").jqGrid('GridUnload');

调用GridUnload方法后,将重新创建基于jqGrid的table元素。因此,如果您将$("#jqGridElement")保存在变量(例如var gridObj = $("#jqGridElement"))中,则应刷新值(使用作业gridObj = $("#jqGridElement"))。

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

让您理解的重要一点是每行使用id(<tr>元素)。如果您不想自己管理ID,可以使用undefined作为addRowData方法中的rowid。如果$.jgrid.randId()方法将在内部用于为新行生成唯一ID。