【问题标题】:jqGrid Added Row being removed after calling reloadGridjqGrid 调用 reloadGrid 后添加的行被删除
【发布时间】:2013-01-25 18:42:59
【问题描述】:

向 jqGrid 添加行的正确方法是什么?如果我这样称呼:

$('#quoteGrid').jqGrid('addRowData', undefined /* random row id */, rowData);

该行出现在网格中,但是,如果我在之后的任何时候调用它:

$('#quoteGrid').trigger('reloadGrid');

行不见了。我检查了萤火虫,数据实际上正在添加到数组中,但是在调用 reloadgrid 时它会被删除。

我的网格数据参数:

    datatype: 'local',
    data: data,
    loadonce:true,

【问题讨论】:

  • 他没有从服务器获取,他的数据类型是'local',请看下面我的回答。
  • 我不希望对添加的每一行都进行数据库调用。 :)
  • 嗯,你需要让一些人知道你正在向数据集中添加一条记录......你打算如何处理?
  • 全部添加后获取数据,然后保存到数据库中
  • 听起来不是不可能,但听起来过于复杂,除非有原因驱动这个?

标签: jquery jqgrid


【解决方案1】:

它被添加到网格中,而不是添加到存储网格中呈现的数据的本地对象中。您可以在 addRowData 函数调用中连接一些内容以将其附加到本地数据存储中,然后当您的网格下次查看该对象以重新加载其数据时,它将显示出来。

【讨论】:

  • 似乎不起作用。我使用“getGridParam”函数拉出数组数据,添加行,然后使用“setGridParam”将其推回。重新加载网格后,数据仍然在网格的“数据”对象中,只是没有显示出来。
  • 试试loadonce: false
  • 仍然杀死添加的项目。添加的项目仍在数据对象中。我们公司刚刚从他们那里购买了商业支持,看看为什么会发生这种情况
  • 如果你能制作一个这样的 JSFiddle,我很乐意看看,我自己也有点好奇。
  • 因此,显然,如果打开了分组,并且项目的组未定义,它将保留在数据集中,但如果重新加载网格,则不会显示它。这在文档中没有说明:trirand.com/jqgridwiki/doku.php?id=wiki:grouping
【解决方案2】:

我使用此代码解决了这个问题。添加行后执行此代码,我获取网格的更新数据,然后将其保存在本地对象中,然后将此本地对象重新分配给网格并将网格重新加载到第 1 页。

        var grid_data = $("#Grid_ID").jqGrid('getGridParam', 'data'); 
        $("#Grid_ID").jqGrid('clearGridData').jqGrid('setGridParam', { 
            datatype: 'local',
            data: grid_data,
            rowNum: grid_data.length 
        }).trigger('reloadGrid', [{ page: 1}]);

【讨论】:

    【解决方案3】:

    我正在尝试Uzair's solution,但$("#Grid_ID").jqGrid('getGridParam', 'data') 导致删除的行(有两行的网格),我要做的是改用$("#Grid_ID").jqGrid('getRowData');。希望能帮助到你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多