EXT中grid分页实现的完整例子---从前台到后台

// -------------------- 定义grid--------------------------

var page_size = 10; //定义页面记录最大显示数量
var MyRecord = Ext.data.Record.create([

{name : 'ygId'},

{ name : 'workDate'},

{name : 'workEdDate'},

{name : 'wtBgtime'},

{name : 'wtEdtime' },

{name : 'wtPotime'},

]);

var store = new Ext.data.Store({

proxy : new Ext.data.HttpProxy({
url : 'empAbsentInfoManage.action?method=getlist' //从后台获取数据
}),

reader : new Ext.data.JsonReader({
root : "root",
totalProperty : "total"

}, MyRecord)

});
store.load({
params : {//这两个参数是分页的关键,当你点击 下一页 时,这里的值会传到后台,也就是会重新运行:store.load
start : 0,
limit : page_size
}
});

var sm = new Ext.grid.CheckboxSelectionModel();

var fuuzy = new Ext.form.TextField({
id : "fuzzy",
name : "fuzzy"
});

var grid = new Ext.grid.GridPanel({
region : "center",
// region:"east",

store : store,
columns : [// 设计页面显示的表格信息,字段与Ext.data.Record.create匹配
sm,
{
id : 'id',
header : "人员ID",
width : 75,
sortable : true,
dataIndex : 'ygId'
}, {
header : "开始日期",
width : 75,
sortable : true,
dataIndex : 'workDate'
}, {
header : "开始时间",
width : 75,
sortable : true,
dataIndex : 'wtBgtime'
},{
header : "结束日期",
width : 75,
sortable : true,
dataIndex : 'workEdDate'
}, {
header : "结束时间",
width : 75,
sortable : true,
dataIndex : 'wtEdtime'
}, {
header : "总时间",
width : 75,
sortable : true,
dataIndex : 'wtPotime'
}],
sm:sm,
stripeRows : true,
autoSizeColumns : true,
viewConfig : {
forceFit : true
},

autoExpandColumn : 'id',
title : '员工请假信息管理',

tbar : [fuuzy, {
text : "查询",
handler : queryRecord
}, {
text : "增加",
iconCls : 'add',
handler : addRecord

}, {
text : "修改",
iconCls : 'edit',
handler : updateRecord
}, {
text : "删除",
iconCls : 'delete',
handler : deleteRecord
}],
// 分页
bbar : new Ext.PagingToolbar({
pageSize : page_size,
store : store,
displayInfo : true
})
});

//--------------------------------------------------------------------

//====== 再来看看后台实现 =====================

//获得员工基本信息列表(根据工号模糊查询)
public void GetEmpWorkList() throws Exception {


int start = Integer.parseInt(request.getParameter("start"));

int limit = Integer.parseInt(request.getParameter("limit"));

int end = start + limit;

String fuzzy="";

String sql=
"select * from\n"+
" (\n"+
" select YG_ID, to_char(lt_bgtime,'YYYY-MM-DD HH24:MI:SS'),to_char(lt_EDTIME,'YYYY-MM-DD HH24:MI:SS'), LT_POTIME ,\n"+
" (row_number() over(ORDER BY YG_ID)) rb\n"+
" from ltb \n "+
" ) tt\n" +
" where tt.rb between "+ start+" and "+end; // 关键就在这里,前台的两个参数是用到SQL分页语句中,从而实现了分页查询与前台的分页显示的结合
System.out.print("==============默认SQL ===============>>>>\n"+sql);



Object obj=request.getParameter("fuzzy");
if(obj!=null)
{
fuzzy=obj.toString();
//sql= "select YG_ID, to_char(Lt_bgtime,'YYYY-MM-DD HH24:MI:SS'),to_char(Lt_EDTIME,'YYYY-MM-DD HH24:MI:SS'), LT_POTIME from Ltb where YG_ID like '"+fuzzy+"%'";
sql = "select * from\n"+
" (\n"+
" select YG_ID, to_char(lt_bgtime,'YYYY-MM-DD HH24:MI:SS'),to_char(lt_EDTIME,'YYYY-MM-DD HH24:MI:SS'), LT_POTIME ,\n"+
" (row_number() over(ORDER BY YG_ID)) rb\n"+
" from ltb where YG_ID like '"+fuzzy+"%'\n "+
" ) tt\n" +
" where tt.rb between "+ start+" and "+end; // 关键就在这里,前台的两个参数是用到SQL分页语句中,从而实现了分页查询与前台的分页显示的结合

System.out.print("===============分页SQL ===============>>>>\n"+sql);

}


NativeSQLHelperRemote bll = (NativeSQLHelperRemote) Ejb3Factory
.getInstance().getFacadeRemote("NativeSQLHelper");

List list=bll.queryByNativeSQL(sql); //执行一下SQL语句,这个类是项目的EJB中封装好的,下同

Iterator it=list.iterator();
List blocklist = new ArrayList();


while(it.hasNext())
{

EmpAbsentInfo ewi =new EmpAbsentInfo();
Object[] o =(Object[]) it.next();

if(!o[0].toString().equals(""))
{

ewi.setYgId(o[0].toString());

}
if(o[1]!=null)
{

int index = new String(o[1].toString()).indexOf(" ");

ewi.setWorkDate(o[1].toString().substring(0,index));

ewi.setWtBgtime(o[1].toString().substring(index));

}
if(o[2]!=null)
{

int index = new String(o[2].toString()).indexOf(" ");

ewi.setWorkEdDate(o[2].toString().substring(0,index));

ewi.setWtEdtime(o[2].toString().substring(index));



}
if(o[3]!=null)
{
ewi.setWtPotime(o[3].toString());

}
blocklist.add(ewi);

}

String str = "{total :"+GetInfoCount(fuzzy)+", root:" + JSONUtil.serialize(blocklist) + "}";

//total 给出了记录的总数量
System.out.print(str);
write(str);

}
//获取信息记录总数
public int GetInfoCount(String fuzzy) throws Exception{
String sql=
"select count(*) from ltb " +
"where YG_ID like '%"+fuzzy+"%'";
NativeSQLHelperRemote bll = (NativeSQLHelperRemote) Ejb3Factory
.getInstance().getFacadeRemote("NativeSQLHelper");
Object count= bll.getSingal(sql);
Integer i=Integer.parseInt(count.toString());
return i;
}

//----------------------------------------------------------------------------------------------------------

总结:前台没有什么特别的地方,后台主要是要用到分页查询语句 :row_number() over(),最后就是得到该查询的记录的总数量,返回给前台。EXT中grid分页实现的完整例子---从前台到后台
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值