我有一个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)
答案 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();
}
});