【问题标题】:I need jqgrid to refresh the entire page, not just the grid我需要 jqgrid 来刷新整个页面,而不仅仅是网格
【发布时间】:2014-10-24 16:12:07
【问题描述】:

我需要 jqgrid 来刷新整个页面,而不仅仅是网格

我有一个显示汽车维修工作细节的 jqgrid。现在,我使用以下脚本重新加载了网格,我需要对其进行更改,以便刷新整个页面,以便更新小计和总计字段(位于网格之外)。这是我的相关代码,任何帮助将不胜感激:

    var editOptions = {
        keys: true,
        successfunc: function () {
            var $self = $(this);
            setTimeout(function () {
                $self.trigger("reloadGrid");
            }, 50);
        }
    };

      $grid.jqGrid('navGrid', '#pager', {add: false, edit: false, del: true, search:false},{reloadAfterSubmit:true,afterSubmit:commonSubmit,closeAfterEdit:true,width:"400"},{reloadAfterSubmit:true,afterSubmit:commonSubmit,closeAfterAdd:false,width:"400"},{url:"editGrid.cfc?method=delUser",closeAfterDelete:true,reloadAftersubmit:false,afterSubmit:commonSubmit,caption:"Delete",msg:"Delete selected",width:"400"});

      $grid.jqGrid('inlineNav', '#pager', {addParams:{position:"last",addRowParams:editOptions},editRowParams:editOptions});
  });

【问题讨论】:

  • 顺便说一句,我尝试更改 $self.trigger("reloadGrid");到 $self.trigger("location.reload()");但这只会使新行消失,直到我使用 F5 手动刷新页面。 (我也尝试了 resetForm() 并得到了相同的结果)

标签: javascript jqgrid


【解决方案1】:

如果您确实需要重新加载整个当前 HTML 页面,您可以致电 location.reload();location.reload(true);

如果您只需要刷新页面上一些在网格之外的元素,您可以在服务器响应中包含值(小计和总计)并将值填充到 loadCompletebeforeProcessing 回调中。在loadCompletebeforeProcessing 内部,第一个参数data 包含完整的服务器响应。因此,您可以从响应中获取所需的值(小计和总计)并使用 jQuery.val 或其他方法来修改页面的外部元素。

【讨论】:

  • 谢谢奥列格。我尝试使用 location.reload() 并且当我更改它时,网格会刷新到原始状态(没有新行),直到我手动点击 F5 然后它重新出现。有趣的是,在删除时,它调用了一个名为 commonSubmit 的函数,其中包括 resetForm() 命令,并且在删除一行时它工作正常。它似乎只有在 editOptions 变量内时才会受到影响。在过去的 2 天里,我已经尝试了所有我能想到的方法,但似乎无法让它发挥作用。
  • @RaymondMeade:不客气!你用过location.reload(); 还是location.reload(true);。最后一个不应该使用本地缓存并从服务器重新加载页面。您如何填充网格可能也很重要。 HTTP 响应可以在 HTTP 标头中包含 HTTP 缓存选项。例如,我通常在服务器响应中使用网格的 JSON 数据设置 Cache-Control: private, max-age=0
  • 两种方法我都试过了。我什至尝试过 window.location.reload(true) 和 resetForm()。除了 reloadGrid 之外,似乎什么都没有。我认为问题出在 editOptions 变量中,但我不太了解 javascript 或 jquery 的语法,无法弄清楚。 (这是我第一次使用 jquery 或 jqgrid)
  • @Raymond,我现在也有同样的问题。我可以知道你知道吗?
  • @zhihong:如果您查看 Raymond 的个人资料,您会看到“Last seen 2014 年 12 月 4 日 21:29”。所以我不建议你等待他的回答。您应该尝试我的建议并使用location.reload();location.reload(true); 并查看结果。
猜你喜欢
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
  • 1970-01-01
  • 2014-01-10
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
相关资源
最近更新 更多