【问题标题】:How to set the default sort direction when clicking grid header column in GXT 2.2.5在 GXT 2.2.5 中单击网格标题列时如何设置默认排序方向
【发布时间】:2017-02-14 21:10:43
【问题描述】:

有没有办法控制第一次单击网格标题时使用的默认排序顺序?假设,我有两列,一列是名称,另一列是下载。我想在第一次单击网格标题时将名称设置为ASC order 并下载为DESC。这意味着当我第一次单击下载列标题时,它应该首先显示下载次数最多。

是否可以设置列的初始排序顺序?

【问题讨论】:

    标签: java gwt grid gxt


    【解决方案1】:

    我有一个不同的解决方案

    我遇到过类似的情况,我希望在第一次点击时对日期列进行 DESC 排序,而在第一次点击时对其他列进行 ASC 排序。我编写了自己的 GridView,并在其中重写了 onHeaderClick 函数,如下所示:

        /**
         * Make sure that Date columns are sorted in a DESCENDING order by default
         */
        @Override
        protected void onHeaderClick(Grid<ModelData> grid, int column)
        {
            if (cm.getColumn(column).getDateTimeFormat() != null)
            {
                SortInfo state = getSortState();
    
                if (state.getSortField() != null && state.getSortField().equals(cm.getColumn(column).getId()))
                {
                    super.onHeaderClick(grid, column);
                    return;
                }
                else
                {
                    this.headerColumnIndex = column;
                    if (!headerDisabled && cm.isSortable(column))
                    {
                        doSort(column, SortDir.DESC);
                    }
                }
            }
            else
            {
                super.onHeaderClick(grid, column);
                return;
            }
        }
    

    【讨论】:

      【解决方案2】:

      我找到了解决方案。

      您可以使用 Store Sorter 设置初始排序方向。

      store.setStoreSorter(new StoreSorter<TemplateContentItem>(){
              @Override
              public int compare(Store<TemplateContentItem> store,
                      TemplateContentItem m1, TemplateContentItem m2,
                      String property) {
                  if(property.equals("downloads")){
                      return (super.compare(store, m1, m2, property) * -1);
                  }
                  return super.compare(store, m1, m2, property);
              }
          });
      

      在上面的代码中,它会检查列是否被下载而不是反向排序结果。

      【讨论】:

      • 标题“排序顺序箭头”在您的情况下将处于错误位置。此外,我认为将该逻辑移入排序器是个坏主意。
      • 感谢您的指正。您可以使用 Tom Teman 的解决方案,这是一个很好的解决方案,我认为它也可以解决您的排序箭头问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2021-07-07
      • 2016-09-18
      • 2011-04-27
      • 1970-01-01
      • 2012-04-05
      • 1970-01-01
      相关资源
      最近更新 更多