我在使用ext作为数据呈现时,遇到一个列排序问题:在没有使用分页的时候,页面显示出来对每列多可以进行排序,但使用分页后,页面显示出来对每一列多无法进行排序,事件无法激发。请指教下,谢谢
[b]问题补充:[/b]
每列的sortable多是true
[b]问题补充:[/b]
這是store
[code="java"]ds = new Ext.data.Store({
proxy: new Ext.data.DWRProxy(pageDwr.queryPage_smt_203, true),
reader: new Ext.data.ListRangeReader({id:"sysId",totalProperty:'totalSize'},recordType),
remoteSort: true
});
ds.on("load", function () {
});
}[/code]
這是ColumnModel:
[code="java"]columnModel= new Ext.grid.ColumnModel(
[
{
header: '',
width: 35,
renderer:renderDescn
},
{
header: '工號',
width: 110,
sortable: true,
dataIndex: 'moNumber'
},{
header: '狀態',
width: 70,
sortable: true,
dataIndex: 'moStatus',
renderer:renderStatus
},
{
header: '增加數量',
width: 70,
sortable: true,
dataIndex: 'addQty'
},
{
header: '減少數量',
width: 70,
sortable: true,
dataIndex: 'subtractQty'
},
{
header: '修改人員',
width: 80,
sortable: true,
dataIndex: 'modifyOp'
} ,
{
header: '修改日期',
width: 110,
sortable: true,
dataIndex: 'modifyDt',
renderer:Ext.util.Format.dateRenderer('Y¦~m¤ëd¤é')
}
]);
}[/code]
這是grid:
[code="java"]
grid = new Ext.grid.GridPanel({
contentEl: 'mygrid',
ds: ds,
cm: getColumnModel(),
autoWidth: false,
bbar: bbar,
width: 550,
height: 260
});
grid.render('mygrid');
}
[/code]
分頁代碼:
[code="java"]grid = new Ext.grid.GridPanel({
contentEl: 'mygrid',
ds: ds,
cm: getColumnModel(),
autoWidth: false,
bbar: bbar,
width: 550,
height: 260
});
grid.render('mygrid');
}[/code]
這是頁面初始化:
Ext.onReady(function(){
initDataSource();
ds.on('beforeload', function() {
ds.baseParams = {
number:mo_num,
status:mo_status,
add:'',
subtract:''
};
});
ds.load({params:{start:0, limit:9}});
}
buildGrid();
});
在java代碼裡面參數是這樣的:
[code="java"]public ListRange queryPage_smt_203(Map contriction){
System.out.println("----------PageDwr starting-------------");
ListRange list=new ListRange();
int start = Integer.parseInt(contriction.get("start").toString());
int limit = Integer.parseInt(contriction.get("limit").toString());
String number=contriction.get("number").toString();
String status=contriction.get("status").toString();
String add=contriction.get("add").toString();
String subtract=contriction.get("subtract").toString();
System.out.println("[start]:"+start+"[limit]:"+limit);
String countHql="select count(*) from AccountsLog where 1=1 ";
String fromHql="from AccountsLog where 1=1 ";
StringBuffer whereHql=new StringBuffer();
if(!StringTool.filterNull(number).equals(""))
whereHql.append(" and moNumber='"+number+"'");
if(!StringTool.filterNull(status).equals("")){
String stus[]=StringTool.filterNull(status).trim().split("@");
whereHql.append(" and moStatus='"+stus[1]+"'");
}
if(!StringTool.filterNull(add).equals(""))
whereHql.append(" and addQty='"+add+"'");
if(!StringTool.filterNull(subtract).equals(""))
whereHql.append(" and subtractQty='"+subtract+"'");
System.out.println(fromHql+whereHql.toString());
System.out.println("[number]:"+number+"[status]:"+status+"[add]:"+add+"[subtract]:"+subtract);
String HQL=fromHql+whereHql.toString()+" order by modifyDt desc";
System.out.println(HQL);
countHql=countHql+whereHql.toString();
int tCount =(Integer)hibtool.selectData(countHql).get(0);
Query query=hibtool.getSession().createQuery(HQL);
query.setFirstResult(start);
query.setMaxResults(limit);
ArrayList listt=(ArrayList)query.list();
System.out.println("[list]:"+listt);
data=new Object[listt.size()];
for(int i=0;i<listt.size();i++){
data[i]=(Object)listt.get(i);
}
list.setData(data);
list.setTotalSize(tCount);
return list;
}
[/code]
基本上這樣寫的
沒有使用分頁,對於每一列多是可以正常排序的
而使用的分頁后,每列的排序功能就失效
圖如下:
[img]/upload/attachment/106294/6d0cd3be-6e26-3387-93ab-b4546df80334.jpg[/img]