2010-08-24 57 views
2

我有一個4列的網格面板,其中一個是數字(最多4位數字),我想按這個列對行進行排序。我的問題是Ext JS對行進行排序,就好像列是文本一樣,所以5在3000之後排序。ExtJS GridPanel numberColumn - 排序問題

我試圖使用numberColumn而不是普通列(在GridPanel的列中指定x類型) ,但它不會改變排序。

因此,我試圖格式化數字,所以5將顯示爲0005,而0005會在3000之前。但numberColumn的格式選項似乎並沒有讓我指定最小數量的數字(在Java中,使用NumberFormat ,0000會工作,但在這裏沒有)。

所以我把一個渲染器強制我的數字出現4位數字,它的工作原理,但似乎排序方法在渲染之前使用這些值,這很合乎邏輯。

我被困在嘗試了所有的想法後,有沒有人有線索?

+4

你在做什麼商店?你在那邊配置過類型嗎?它應該是這樣的:'{name:'price',type:'float'}' – Wolph 2010-08-24 12:12:16

+0

它與「type:'int'」。我試着用「type:'float'」,但它也不起作用。 – luc 2010-08-24 15:29:17

+0

你有沒有正在運行的示例? – SBUJOLD 2010-08-25 18:25:46

回答

1

如果您使用遠程存儲排序,那麼排序是遠程完成的(數據庫,如mysql)。那麼該字段的數據庫的列的類型是什麼?如果它是char或varchar,那就是問題所在。

0

我遇到了一個類似的問題,其中由exj網格按數字中的每個數字排序,因此,例如,列表可能會重新排列爲1,2,22,3,4,41,5 ...因爲它的價值,我發現在extjs4,在模型中定義類型爲int做了詭計,我沒有指定本地或遠程排序,但它似乎正在工作...

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' 
    }] 
}); 
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