【问题标题】:In jqgrid, how to handle when no records exists on page or grid在jqgrid中,页面或网格上不存在记录时如何处理
【发布时间】:2014-11-18 13:16:31
【问题描述】:

在 jqgrid 中,当有 6 条记录时(分页 5)。 因此,第一页有 5 条记录,第二页现在有 1 条记录,用户已删除第 6 条记录(从第 2 页开始)。 然后,网格仍然保留在第 2 页上,并且第 2 页上不存在行,因为它已被删除。当第 1 页有 5 条记录而第 2 页没有记录时,它看起来不太好,但在第 2 页出现了页面选择。

请您指导如何解决这个问题。我认为,它应该移到前一页(最后一页)。

另外,相关问题: 当所有 6 条记录都被删除时。然后,网格仍然出现。 对此,应该有一些标签消息出现,因为不存在记录。 如何做到这一点?

【问题讨论】:

  • 您是否使用“本地”datatype?你如何删除行(哪个 API)?删除期间是否向服务器发送任何数据?主要区别在于行数可以在服务器上更改。因此,在本地删除记录期间,会 刷新 数据并加载服务器上的当前行数。在此期间可以添加或删除其他一些行。
  • 对不起,细节较少。我做自定义删除。单击“超链接”时,调用对服务器进行ajax调用的javascript函数并删除记录。之后,我确实使用 $("#GrdList").trigger('reloadGrid'); 来引用网格。如果页面被删除,请指导如何更改页面。此外,不存在任何记录,然后只显示标签。我得到了emptyrecords 但是,当页面没有记录时出现(尽管出现了标题和寻呼机)。

标签: jqgrid jqgrid-asp.net jqgrid-formatter mvcjqgrid


【解决方案1】:

您可以使用reccount 选项提供网格的当前页面上的数量或记录。如果记录数为 0,您可以执行其他操作。例如,您可以使用附加的page 选项触发reloadGrid(请参阅the answer

var $self = $(this), // or $("#gridId")
    p = $self.jqGrid("getGridParam"), // get all parameters
    newPage;

if (p.lastpage > 1) { // on the multipage grid
    newPage = p.page; // the current page
    if (p.reccount === 0 && p.page === p.lastpage) {
        // if after deleting there are no rows on the current page
        // which is the last page of the grid
        newPage -= 1; // go to the previous page
    }
    // reload grid to show rows from the page with rows.
    // depend on where you use the code fragment you could
    // need reloading only in case 
    // p.reccount === 0 && p.page === p.lastpage
    setTimeout(function () {
        $self .trigger("reloadGrid", [{ page: newPage}]);
    }, 50);
}

如果您需要在网格正文中显示一些消息文本,您可以关注为the answer 创建的the demo。该演示仅在reccount === 0 的情况下显示带有消息文本的div。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 2017-08-30
    • 1970-01-01
    相关资源
    最近更新 更多