【问题标题】:jqGrid—Reloading DatajqGrid—重新加载数据
【发布时间】:2011-11-07 19:33:36
【问题描述】:

我正在尝试向我的数据源添加一个项目,然后根据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');
    }

【问题讨论】:

  • 看看这个:[jqGrid 解决方案][1] [1]:stackoverflow.com/questions/1297044/…
  • 看起来该链接说要使用以下命令清除网格:$("#jqGridElement").trigger('gridUnload'); - 但这似乎没有任何作用......

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


【解决方案1】:

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

如果你需要在“new style API”中调用GridUnload,它应该看起来像

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

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

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

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

【讨论】:

  • 感谢另一个很好的回答。我希望以后有人能找到它们,并节省我试图弄清楚这些东西的时间。
  • @Adam Rackis:不客气!我以前想写更多关于填充网格的信息,但我决定不要让答案太长。您是从服务器加载“JSON”数据还是在客户端动态构造tableSrc 对象?
  • 最终用户将单击一个按钮,发布到 Web 服务,返回一个 json 对象,然后我希望网格对其进行刷新。这就是我通过添加一个新行来模拟的;最终我将清除和刷新整个行数组并告诉网格重新加载。多亏了你,我想我知道如何做到这一点了。
  • @Adam Rackis:如果你不使用datatype: 'json'url: yourServerUrlWichProvideJSON时所有的数据都来自服务器的JSON格式?这是原生方式。 jqGrid 就是为此而设计的。在按钮的click 事件中,您可以调用$("#jqGridElement").trigger('reloadGrid')。如果您希望数据的排序和分页将在本地进行,您可以使用 jqGrid 的 loadonce: true 参数。如果您将jsonReader 参数添加到jqGrid,您几乎可以从服务器读取任何JSON 输入并用数据填充网格。如果您发布本机 JSON 服务器响应,我可以提供帮助。
  • 这是否适用于 POST 和 GET,或者我是否会开始使用 GET 调用我的 Web 方法?无论如何,除了将数据绑定到网格之外,我实际上还需要对数据做其他事情,所以我拥有它的方式可能就是我需要的方式。我确实看到了如何将网格绑定到 url,我实际上希望这更适合我的网站。
猜你喜欢
  • 2011-09-11
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多