0

我正在尝试向我的数据源添加一个项目,然后根据这个答案重新加载网格。网格加载正常。被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');
    }
4

1 回答 1

2

首先,该语句$("#jqGridElement").trigger('GridUnload')什么都不做,因为没有名称为 的事件'GridUnload'。jqGrid 当前支持的唯一事件是'reloadGrid'. 该事件支持您可能感兴趣的附加参数(请参见此处)。该调用$("#jqGridElement").trigger("reloadGrid", [{current:true}]);将刷新网格,但不会更改可能使用户的选择。

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

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

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

现在关于你的主要问题。如果您需要将新列添加到网格或在旧网格的位置上创建绝对另一个网格,该方法GridUnload很有用。(以答案这个为例)。如果您需要将一行数据添加到现有网格,您可以使用addRowData例如。

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

于 2011-08-31T18:16:04.533 回答