使用grid和ext做分页的问题
我在使用dwr和extGrid做分页的时候,因为dwr返回的是List,List里存的则是对象,如何把这些对象填充到grid里呢?或者说如何用最简单高效的方法,在后台或前...
我在使用dwr和ext Grid做分页的时候,因为dwr返回的是List,List里存的则是对象,如何把这些对象填充到grid里呢?
或者说如何用最简单高效的方法,在后台或前台把对象变成json对象,把List编程JSONArray 展开
或者说如何用最简单高效的方法,在后台或前台把对象变成json对象,把List编程JSONArray 展开
2个回答
2013-12-02
展开全部
这里有个分页的,是和.net结合在一起的
代码:其实主要是获取params:{start:0,limit:9}的时候出了问题,导致无法正常分页。
分页的时候,存在三种情况:(1)表总记录 <limit,则读取表所有记录,转换并返回
(2)表总记录除以limit,余数为0,则按照正常读取
(3)(表总记录-start)>limit,正常读取,否则读取剩余记录
SqlHelper shp=new SqlHelper();
string sql="select * from admin";
if( Request.Form["start"]!= null && Request.Form["limit"]!= null )
{
int start = int.Parse( Request.Form["start"] ); //获取页面显示的起始数
int limit = int.Parse( Request.Form["limit"] ); //获取每页记录数
//int start = int.Parse("0"); //获取页面显示的起始数
//int limit = int.Parse("5"); //获取每页记录数
ds=new DataSet();
ds=shp.GetDS(sql);
StringBuilder sb = new StringBuilder();
sb.Append("[");
int pageCount = ds.Tables[0].Rows.Count; //共有页数
//第一种情况:总行数 <PageSaze
if(pageCount <limit)
{
//取出所有记录
for( int i=start ; i < start+pageCount ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+pageCount-1) )
{
sb.Append(",");
}
}
}
//第二种情况:总行数 >PageSaze,但是总行数%PageSaze!=0,即取余不为0
else
{
//用总记录-当前开始行号,判断是否能整除PageSaze(limit)
//整除,显示PageSaze(limit)条记录,否则显示剩下的所有记录
if((pageCount-start)%limit==0)
{
//取出所有记录
for( int i=start ; i < start+limit ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+limit-1) )
{
sb.Append(",");
}
}
}
else
{ //剩余记录>PageSaze(limit)
if((pageCount-start)>limit)
{
//取出所有记录
for( int i=start ; i < start+limit ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+limit-1) )
{
sb.Append(",");
}
}
}
else
{
//取出所有记录
for( int i=start ; i < pageCount ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+pageCount-1) )
{
sb.Append(",");
}
}
}
}
}
sb.Append("]"); //字符串的拼接
string Temp = "{totalCount:"+pageCount+",root:" + sb.ToString() + "}";
Response.Write( Temp );
Response.End();
代码:其实主要是获取params:{start:0,limit:9}的时候出了问题,导致无法正常分页。
分页的时候,存在三种情况:(1)表总记录 <limit,则读取表所有记录,转换并返回
(2)表总记录除以limit,余数为0,则按照正常读取
(3)(表总记录-start)>limit,正常读取,否则读取剩余记录
SqlHelper shp=new SqlHelper();
string sql="select * from admin";
if( Request.Form["start"]!= null && Request.Form["limit"]!= null )
{
int start = int.Parse( Request.Form["start"] ); //获取页面显示的起始数
int limit = int.Parse( Request.Form["limit"] ); //获取每页记录数
//int start = int.Parse("0"); //获取页面显示的起始数
//int limit = int.Parse("5"); //获取每页记录数
ds=new DataSet();
ds=shp.GetDS(sql);
StringBuilder sb = new StringBuilder();
sb.Append("[");
int pageCount = ds.Tables[0].Rows.Count; //共有页数
//第一种情况:总行数 <PageSaze
if(pageCount <limit)
{
//取出所有记录
for( int i=start ; i < start+pageCount ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+pageCount-1) )
{
sb.Append(",");
}
}
}
//第二种情况:总行数 >PageSaze,但是总行数%PageSaze!=0,即取余不为0
else
{
//用总记录-当前开始行号,判断是否能整除PageSaze(limit)
//整除,显示PageSaze(limit)条记录,否则显示剩下的所有记录
if((pageCount-start)%limit==0)
{
//取出所有记录
for( int i=start ; i < start+limit ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+limit-1) )
{
sb.Append(",");
}
}
}
else
{ //剩余记录>PageSaze(limit)
if((pageCount-start)>limit)
{
//取出所有记录
for( int i=start ; i < start+limit ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+limit-1) )
{
sb.Append(",");
}
}
}
else
{
//取出所有记录
for( int i=start ; i < pageCount ;i++ )
{
//string sShipRegion = ds.Tables[0].Rows[i].IsNull("ShipRegion")?"null" : ds.Tables[0].Rows[i]["ShipRegion"].ToString();
sb.Append("{id:'"+ds.Tables[0].Rows[i]["id"].ToString()+"',name:'"+ds.Tables[0].Rows[i]["name"].ToString()+"',sex:'"+ds.Tables[0].Rows[i]["sex"].ToString()+"'}");
if( i!= (start+pageCount-1) )
{
sb.Append(",");
}
}
}
}
}
sb.Append("]"); //字符串的拼接
string Temp = "{totalCount:"+pageCount+",root:" + sb.ToString() + "}";
Response.Write( Temp );
Response.End();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-12-02
展开全部
要用到JSON-lib包转换,下载地址: http://json-lib.sourceforge.net/再用 JSONArray jsonArray = JSONArray.fromObject(list)将list转换成JSONArray。希望对你有帮助,谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询