【问题标题】:Set a default sort column in SlickGrid在 SlickGrid 中设置默认排序列
【发布时间】:2012-04-05 01:39:51
【问题描述】:

我将SlickGridDataView 一起使用,并尝试在我的表上设置一个默认的排序列。有没有办法触发排序或设置选项以便在加载时对列进行排序?

【问题讨论】:

    标签: javascript slickgrid


    【解决方案1】:

    在最新版本上,您可以这样做:

    grid.setSortColumn("myColId",true); //columnId, ascending
    

    您也可以使用 setSortColumn*s*

    设置多个

    【讨论】:

    • 由于我使用的是DataView,我不相信这种方法会起作用。在设置sortcol = 'myColName' 后,我最终触发了dataView.sort(comparer, false)。 (我应该添加并接受我自己的答案吗?)
    • 我错了。我尝试使用dataView.setSortColumn,但没有成功。但是在我的网格实例上使用它是有效的。就像我上面的解决方案一样。
    • @stuart 我试过了,但它所做的只是将排序列显示为单击。它不会触发我的 dataView 上的排序,它订阅了 onSort 事件。我如何让它触发这个?
    • 嗨尼克,你试过我的回答了吗(第一条评论?)。两者最终都为我工作。 sort()setSortColumn() 都是触发事件。确保它们位于代码的末尾。如果您以更详细的方式开始自己的问题,请在此处发布链接,我会看看是否可以提供帮助。
    • @NickRetallack 嘿,我正面临与您指出的相同的问题。它只会更改该列上的字形,但不会触发 onSort。你搞定了吗?
    【解决方案2】:

    在此处查看我的解决方案。这最初在不使用 Dataview 的情况下对列应用排序。

    Calling sort on slickgrid

    我认为它可以满足您的需求。

    顺便说一句,因为您使用的是 Dataview。你也可以试试这个。但我没有亲自尝试过。

        dataview.reSort() 
    

    【讨论】:

      【解决方案3】:

      我有一个有趣的想法,它只是启用多列标题排序(example-multi-column-sort.html),然后在加载网格后模拟标题上的 click()当网格第一次出现时,我想对行进行排序(“时间”是我正在排序的列的名称)。列标题的 ID 的计算类似于网格的根 div 的 ID(至少现在:0)):

              var gridId = $('#myGrid').attr("class");
              gridId = '#'+gridId.replace(" ui-widget","")+'time';
              $(gridId).click();
      

      然后用户可以单击他们想要的任何其他列标题,但我只是为他们单击了第一个。

      【讨论】:

        【解决方案4】:

        这最终成为了我的解决方案,只需按照您希望的排序方式为光滑的网格提供数据。然后让 multisort 在剩下的时间里处理它。仍然没有以编程方式设置排序和更新网格,但它快速简单

          this.data = res.data.sort((a, b) => {
                    let x = a[config.sortField], y = b[config.sortField];
                    return (x == y ? 0 : (x > y ? 1 : -1));//no ===
                })
        

        【讨论】:

          猜你喜欢
          • 2023-03-28
          • 1970-01-01
          • 1970-01-01
          • 2013-12-14
          • 1970-01-01
          • 2023-04-01
          • 1970-01-01
          • 1970-01-01
          • 2011-12-02
          相关资源
          最近更新 更多