【问题标题】:Simple Sort Sample for slickgridslickgrid 的简单排序示例
【发布时间】:2018-11-17 17:45:08
【问题描述】:

我想要简单的 slickgrid 列排序。但是我可能不理解基本思想。

我所做的就是这样。

使列可排序

{id: "score", name: "number", field: "score",sortable: true},

制作排序计算函数。

function sortfn(o1, o2) {
  if (o1[column.field] > o2[column.field]) {
    return 1;
  } else if (o1[column.field] < o2[column.field]) {
    return -1;
  }
  return 0;
}

然后订阅onSort

grid.onSort.subscribe(function (e, args) { 
    grid.invalidateAllRows();
    grid.render();
  });

然后下一个,,,,

我想我应该把sortfn放在某个地方,但是怎么做??

我应该把sortfn放在哪里??

【问题讨论】:

    标签: javascript slickgrid


    【解决方案1】:

    查看示例here。网格中没有默认排序 - 由数据源管理。

    This example 使用源数据数组的原生 javascript sort 属性对行进行排序:

    grid = new Slick.Grid("#myGrid", data, columns, options);
    
    grid.onSort.subscribe(function (e, args) {
      var cols = args.sortCols;
    
      data.sort(function (dataRow1, dataRow2) {
        for (var i = 0, l = cols.length; i < l; i++) {
          var field = cols[i].sortCol.field;
          var sign = cols[i].sortAsc ? 1 : -1;
          var value1 = dataRow1[field], value2 = dataRow2[field];
          var result = (value1 == value2 ? 0 : (value1 > value2 ? 1 : -1)) * sign;
          if (result != 0) {
            return result;
          }
        }
        return 0;
      });
      grid.invalidate();
      grid.render();
    });
    

    This example 将排序外包给作为网格数据源的 DataView 对象。

    grid.onSort.subscribe(function (e, args) {
      sortdir = args.sortAsc ? 1 : -1;
      sortcol = args.sortCol.field;
    
      if (isIEPreVer9()) {
        // using temporary Object.prototype.toString override
        // more limited and does lexicographic sort only by default, but can be much faster
    
        var percentCompleteValueFn = function () {
          var val = this["percentComplete"];
          if (val < 10) {
            return "00" + val;
          } else if (val < 100) {
            return "0" + val;
          } else {
            return val;
          }
        };
    
        // use numeric sort of % and lexicographic for everything else
        dataView.fastSort((sortcol == "percentComplete") ? percentCompleteValueFn : sortcol, args.sortAsc);
      } else {
        // using native sort with comparer
        // preferred method but can be very slow in IE with huge datasets
        dataView.sort(comparer, args.sortAsc);
      }
    });
    

    【讨论】:

    • 非常感谢!!第一个例子很简单,很好的起点。我终于可以实现简单的排序了。
    猜你喜欢
    • 2011-08-12
    • 2011-06-26
    • 2013-03-29
    • 2012-07-21
    • 2016-02-05
    • 1970-01-01
    • 2010-12-03
    • 2014-09-18
    • 2013-10-13
    相关资源
    最近更新 更多