您的位置:首页 > 其它

DataReader也玩超酷数据显示分页

2014-04-23 10:14 239 查看
DataReader也玩超酷数据显示分页
用DataReader实现分页,让我头疼了好多天。为什么我非的用DataReader控件实现分页呢?大家看看(http://www.wrclub.net/mb/)这个页面,也许有点明白了吧!对数据的横竖排列我们可以随意控制!
ASP.net中,最容易完成分页操作的是DataGrid,其次是DataList控件;但它们对数据的显示却做了限制,使得数据显示变得很难操作。DataReader模拟快速、仅向前的只读游标的操作,完成分页根本不可能,针对DataReader实现分页也只能从sql语句分析,但它对数据显示完全自由,我们可以根据自己的意愿来定义数据的显示方式!
代码如下:
<%@ Page Language="C#" Debug="true" %> 

<%@OutputCache Duration="3" VaryByParam="none"%> 

<%@Import Namespace="System.Data"%> 

<%@Import Namespace="System.Data.SqlClient"%> 

<Script Language="C#" runat="server"> 

//以下源码由网人俱乐部提供,作者:福星,网址:http://www.wrclub.net/ 

//转摘请注明出处和作者 

//定义每页显示记录数 

int PageSize=9; 

SqlConnection conn; 

void Page_Load(Object src,EventArgs e) 



int RecordCount,PageCount,CurrentPage,startID,endID; 

//建立与数据库的连接 

conn =new SqlConnection(ConfigurationSettings.AppSettings["strconn"]); 

conn.Open(); 

//第一次请求执行 

if(!Page.IsPostBack) 



//计算总共有多少记录 

RecordCount = CalculateRecord(); 

//计算总共有多少页 

//取整 

PageCount = RecordCount/PageSize; 

if (RecordCount%PageSize > 0) 

PageCount = PageCount + 1; 

lblPageCount.Text = PageCount.ToString(); 

lblRecordCount.Text = RecordCount.ToString(); 

CurrentPage = 0; 



//定义一个临时变量 

string startIDt,endIDt; 

//设置下一页开始ID 

startID=0; 

//设置上一页结束ID 

endID=0; 

startIDt=Request.Params["sid"]; 

endIDt=Request.Params["eid"]; 

//获得下一页开始ID 

if(startIDt!=null) 

startID=Convert.ToInt32(startIDt); 

//获得上一页结束ID 

if(endIDt!=null) 

endID=Convert.ToInt32(endIDt); 

//sql语句开始部分 

string ConnStr="select top "+PageSize+" * from article where classid=1 "; 

//如果有下一页开始ID的值,说明点击了“下一页”,条件语句查询的ID小于开始ID(这里排序为ID倒序) 

if(startID>0) 

ConnStr+=" and id<"+startID; 

//如果有上一页结束ID的值,说明点击了“上一页”,条件语句查询的ID大于结束ID(这里排序为ID倒序) 

if(endID>0) 

ConnStr+=" and id>"+endID; 

//ID倒序 

ConnStr+=" order by id desc"; 

//DataReader执行以上sql语句 

SqlCommand cmd=new SqlCommand(ConnStr,conn); 

SqlDataReader myReader = cmd.ExecuteReader(); 

string html="<table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='100%' height='139' bgcolor='#ffffff'><tr>"; 

int i=0; 

while(myReader.Read()) 



//获得上一页结束ID值 

if(i==0)endID=Convert.ToInt32(myReader[0]); 

html+="<td align=center height=180 ><table border='0' cellpadding='0' cellspacing='0' style='border-collapse: collapse' bordercolor='#111111' width='145'><tr><td align=center><img src='"+myReader[2].ToString().Trim()+"/"+myReader[3].ToString().Trim()+"' height=143
width=140 border=0 alt='"+myReader[1].ToString().Trim()+"'></td></tr><tr><td width='100%' background='images/mbbg.gif'><table border='0'cellpadding='0'cellspacing='0'width='100%'><tr><td width='50%'><a href='"+myReader[2].ToString().Trim()+"/' target='_blank'><img
src='images/view.gif' border=0></a></td><td width='50%' align=right><a href='mbdown.aspx?id="+myReader[0]+"' target=_blank><img src='images/down.gif' border=0></a></td></tr></table></td></tr></table></td>"; 

i++; 

if(i%3==0) 

html+="</tr><tr>"; 

//获得下一页开始ID值 

if(i==PageSize)startID=Convert
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: