【问题标题】:jqGrid default sort order?jqGrid默认排序顺序?
【发布时间】:2011-04-13 09:55:40
【问题描述】:

看来 jqGrid sortnamesortorder 属性实际上不会导致您的数据集被排序 - 它们只是导致显示向上/向下箭头。

如何让您的数据集在下载时进行排序?

当您单击列标题时排序效果很好,但我希望将默认排序应用于我们的数据。


更新:当我们点击下一个按钮时,下一个请求对数据进行排序。

这会导致 UI 有点混乱,其中数据在列上使用向下箭头加载 - 并且数据未排序 - 但当您单击下一步时,数据现在已排序。

如果我省略 sortname 和 sortorder,jqGrid 似乎仍然显示排序图标 - 很奇怪。

【问题讨论】:

    标签: jquery sorting jqgrid


    【解决方案1】:

    您可能会两次提供相同的参数(复制粘贴编程时非常常见的错误:) 没有冒犯。我也是。)

    假设你想按OpeningDate降序排序

    ..... options .... 
    sortname: "OpeningDate",
    sortorder: "desc",  <---- assume you write this line and expect to sort descending
    ..... some other options .... 
    sortorder: "asc",   <---- and this line may also be there but you may not be noticing it 
    ..... and other options .... 
    

    第二个“排序”选项会覆盖第一个,您将无法降序排序

    【讨论】:

      【解决方案2】:

      我也遇到了同样的问题。 在加载数据后使用

      $("#tableId").jqGrid('sortGrid','colName', false, 'asc');
      

      $("#tableId").sortGrid('colName', false, 'asc');
      

      如果布尔值设置为 true,则重新加载网格。 最后一个参数可以是“asc”/“desc”,具体取决于排序顺序。

      【讨论】:

        【解决方案3】:

        尝试使用

        $("#list").jqGrid('setGridParam',{ page: 1 }).trigger("reloadGrid");
        

        $("#list").jqGrid('setGridParam',{ rowNum: 10 }).trigger("reloadGrid");
        

        (将 10 替换为您定义为 rowNum 参数的值)。如果它没有帮助,请在您的问题中发布您的代码。

        【讨论】:

        • 您是在建议我们将网格加载两次吗?初始加载(未排序)和希望排序的第二次加载?
        • @Marcus:你没有在你的问题中插入任何代码,所以我不得不猜测你在做什么。如果您从服务器加载 JSON 或 XML 数据,服务器会对数据进行排序,因此您应该修复您的服务器代码。如果您从本地源加载数据或从服务器加载为 unsorted 并使用 "loadonce:true" 您应该对数据进行一次sort。为此,您必须刷新当前页面或网格中显示的数据。您可以针对trigger("reloadGrid") 执行此操作 - 如果是本地数据,它只是“刷新”当前页面。有时设置pagerowNum 等参数会有所帮助
        • 我们正在使用loadonce:true 从服务器加载未排序的数据。将尝试trigger...
        • 我尝试了您的解决方案,但没有任何效果。我使用 loadonce: true 但我有很多参数(子网格、过滤器工具栏、滚动条)。我试图将触发器调用放在 loadComplete 和 jqgrid 声明之外,但没有机会。
        • @ruffp:您应该在一个单独的问题中更好地描述您的问题,在该问题中发布您的 jqGrid 的定义(我的意思是相应的 JavaScript 代码)。旧版本 3.7 引入了loadonce:true 参数,在很多情况下都以错误的方式使用。所以最好分析一下当前的问题。
        【解决方案4】:

        你可能犯了和我一样的错误,那就是我的客户端脚本基于一个使用“sortName”而不是“sortname”的旧示例

        【讨论】:

        • 这是正确答案。我的网格在第一次请求数据时通过了排序标准。属性是 sortname 和 sortorder。
        【解决方案5】:

        问题是(我相信)在请求第一个数据集时会读取参数 sortName 或 sidx

        【讨论】:

          【解决方案6】:

          /俗气的回答提醒

          为什么不在第一次加载时隐藏已排序的图标?第一次有人排序,取消隐藏它并且事情按预期工作。听起来您的意图是在用户选择要排序的列之前加载未排序的内容。

          【讨论】:

          • 我有点同意这个解决方案...第一次使用服务器端代码进行排序,因此如果您希望最初对其进行排序,它会在加载时准确显示。在用户决定根据您的前进方向进行排序后,设置默认搜索列或隐藏/显示 (stackoverflow.com/questions/2601476/…) 排序列。
          猜你喜欢
          • 2012-12-15
          • 1970-01-01
          • 2011-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多