Ext JS 5中的自定义排序器网格列

时间:2015-12-22 14:34:53

标签: extjs extjs5

我有一个Gridpanel,其中列被设置为组合框...我将ID加载为valueField然后在渲染器中我使用ID搜索商店并显示相应的名称作为displayField 像这样 -

view.renderer = function(value) {
        var store = view.getEditor().getStore(),
            record;

        if (value && store) {
            record = store.findRecord(view.valueField, value, 0, false, false, true);

            if (record) {
                return record.get(view.displayField);
            }
        }

        return value;
    };

当我点击排序升序/排序降序时,此列按ID(valueField)排序..我希望它按名称排序(displayField)

2 个答案:

答案 0 :(得分:0)

在网格列中添加custom sorter,例如

sorter:function(o1, o2) {
    return ((o1.get(view.displayField)>o2.get(view.displayField)) ? 1 : -1);
}

答案 1 :(得分:0)

我做了以下事情:

我通过ajax返回值:id-description 并显示我使用Ext.util.Format格式化如下:

Ext.util.Format.detipolancamento = function(v)
{
  v = v.split("-"); 
  for (i = 0; i < todastipolancamento.length; i++) {
    desctipolancamento = todastipolancamento[i].toString(); 
    var tipolancamento = desctipolancamento.split( "," );
    if (v[0] == tipolancamento[0]) {
        return tipolancamento[1];
    }
  } 
};

其中todastipolancamento是一个具有组合框值的数组。

我在专栏中使用过: formatter: 'detipolancamento',

然后在模型中 - &gt;字段我把自定义sortType: {name: 'tipolancamento', sortType: 'asPerson2'},

最后我使用asPerson2进行排序,并且没有ID,如下所示:

Ext.apply(Ext.data.SortTypes, {
  asPerson: function(person){
    return  person.toLowerCase();
  },
  asPerson2: function(person){
    var retorno = person.split('-');
    return  retorno[1].toLowerCase();
  }    
});