ExtJS GridPanel numberColumn - 排序问题

时间:2010-08-24 11:58:25

标签: extjs

我有一个有4列的网格面板,其中一列是数字(最多4位数),我想按此列排序。我的问题是Ext JS对行进行排序,就像列是文本一样,因此5在3000之后排序。

我尝试使用numberColumn而不是普通列(在GridPanel的列中指定x类型),但它不会更改排序。

因此我尝试格式化数字,因此5将显示为0005,而0005将在3000之前。但numberColumn的格式选项似乎不允许我指定最小数字位数(在Java中,使用NumberFormat, 0000会工作,但这里没有)。

所以我放一个渲染器来强制我的数字以4位数显示,但是它有效,但似乎sort方法在渲染之前使用了这些值,这是非常符合逻辑的。

我在尝试所有想法后陷入困境,是否有人有线索?

4 个答案:

答案 0 :(得分:1)

如果您正在使用远程存储排序,则远程完成排序(数据库,如mysql)。那么该字段的数据库列的类型是什么?如果它是char或varchar,那就是问题。

答案 1 :(得分:1)

我遇到了类似的问题,列类型无法修复此问题。要获得正确的排序,模型中的类型应为数字。

1)在模型定义中将字段类型设置为整数。

Ext.define('myModel', {
  extend: 'Ext.data.Model',
  fields: [{ name: 'myField', type: 'int' }]
});

2)使用该模型创建商店。

var myStore = Ext.create('Ext.data.Store',{
  model: 'myModel'
});

3)使用商店定义GridPanel,并将您的字段作为dataIndex链接到列定义。

Ext.create('Ext.grid.Panel',{
  store: myStore,
  columns: [{
    header: 'Numbers',  dataIndex: 'myField'
  }]
});

答案 2 :(得分:0)

我遇到了一个类似的问题,exj网格按你的号码中的每个数字排序,所以例如一个列表可能被重新排序为1,2,22,3,4,41,5 ......它的价值,我发现在 extjs4 中,在模型中将类型定义为int做了诀窍,我没有指定本地或远程排序,但它似乎正在工作......

答案 3 :(得分:0)

Ext.define('ExtMVC.model.Contato', {
  extend: 'Ext.data.Model',
  fields: [{'id', type: 'int'}, 'name', 'phone', 'email']
});

这是我连接到MySQL的代码。我跟着这个 - > {' id',输入:' int'},它运作得很好......谢谢大家!我使用Ext js 4.2.x