时间:2016-02-16 00:48 来源: 我爱IT技术网 作者:佚名
欢迎您访问我爱IT技术网,今天小编为你分享的编程技术是:【asp.net中Datalist使用数字分页的实现方法】,下面是详细的讲解!
asp.net中Datalist使用数字分页的实现方法
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;
/// <summary>
///PageNums 的摘要说明
/// </summary>
public class PageNums
{
/// </summary>
/// <param name="ds">DataSet实例</param>
/// <param name="datalistname">DataList名称</param>
/// <param name="pagesize">分页大小</param>
public static string GetPageNum(DataSet ds, DataList datalistname, int pagesize)
{
PagedDataSource objPds=new PagedDataSource();
objPds.DataSource=ds.Tables[0].DefaultView;
objPds.AllowPaging=true;
int total=ds.Tables[0].Rows.Count;
objPds.PageSize=pagesize;
int page;
if (HttpContext.Current.Request.QueryString["page"] !=null)
page=Convert.ToInt32(HttpContext.Current.Request.QueryString["page"]);
else
page=1;
objPds.CurrentPageIndex=page - 1;
datalistname.DataSource=objPds;
datalistname.DataBind();
int allpage=0;
int next=0;
int pre=0;
int startcount=0;
int endcount=0;
string pagestr="";
if (page < 1) { page=1; }
//计算总页数
if (pagesize !=0)
{
allpage=(total / pagesize);//计算总页数
allpage=((total % pagesize) !=0 ? allpage + 1 : allpage);
allpage=(allpage==0 ? 1 : allpage);
}
next=page + 1;
pre=page - 1;
startcount=(page + 5) > allpage ? allpage - 9 : page - 4;//中间页起始序号
//中间页终止序号
endcount=page < 5 ? 10 : page + 5;
if (startcount < 1) { startcount=1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
if (allpage < endcount) { endcount=allpage; } //页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
pagestr="共" + allpage + "页";
pagestr +=page > 1 ? "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=1\">首页</a>;<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + pre + "\">上一页</a>" : "首页 上一页";
//中间页处理,这个增加时间复杂度,减小空间复杂度
for (int i=startcount; i <=endcount; i++)
{
pagestr +=page==i ? "<font color=\"#ff0000\">" + i + "</font>" : "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + i + "\">" + i + "</a>";
}
pagestr +=page !=allpage ? "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + next + "\">下一页</a><a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + allpage + "\">末页</a>" : " 下一页 末页";
return pagestr;
}
public static string GetPageSql(string FileName, DataList datalistname, int pagesize)
{
int page;
int allpage=0;
int next=0;
int pre=0;
int startcount=0;
int endcount=0;
string pagestr="";
if (HttpContext.Current.Request.QueryString["page"] !=null)
page=Convert.ToInt32(HttpContext.Current.Request.QueryString["page"]);
else
page=1;
if (page < 1) { page=1; }
DataSet ds=DataBindSql("EXEC pagesql '*',' FROM " + FileName + " '," + pagesize + "," + page, FileName);
datalistname.DataSource=ds;
datalistname.DataBind();
int total=DataBind(FileName);
//计算总页数
if (pagesize !=0)
{
allpage=(total / pagesize);//计算总页数
allpage=((total % pagesize) !=0 ? allpage + 1 : allpage);
allpage=(allpage==0 ? 1 : allpage);
}
next=page + 1;
pre=page - 1;
startcount=page / 5 * 5;//中间页起始序号
//中间页终止序号
endcount=startcount+5;
if (startcount < 1) { startcount=1; } //为了避免输出的时候产生负数,设置如果小于1就从序号1开始
if (allpage < endcount) { endcount=allpage; } //页码+5的可能性就会产生最终输出序号大于总页码,那么就要将其控制在页码数之内
pagestr="<a>"+page + "/" + allpage + "页</a>";
pagestr +=page > 1 ? "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=1\">首页</a><a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + pre + "\">上一页</a>" : "首页 上一页";
//中间页处理,这个增加时间复杂度,减小空间复杂度
for (int i=startcount; i <=endcount; i++)
{
pagestr +=page==i ? "<font color=\"#ff0000\">" + i + "</font>" : "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + i + "\">" + i + "</a>";
}
pagestr +=page !=allpage ? "<a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + next + "\">下一页</a><a href=\"" + HttpContext.Current.Request.CurrentExecutionFilePath + "?page=" + allpage + "\">末页</a>" : " 下一页 末页";
return pagestr;
}
private static int DataBind(string FileName)
{
string sql="select * from " + FileName;
DbConnection dc=new DbConnection();
SqlConnection mycon=new SqlConnection(dc.ConnectionString);
SqlDataAdapter mypter=new SqlDataAdapter(sql, mycon);
DataSet ds=new DataSet();
mycon.Open();
mypter.Fill(ds, FileName);
mycon.Close();
int total=ds.Tables[0].Rows.Count;
return total;
}
private static DataSet DataBindSql(string sql, string FileName)
{
DbConnection dc=new DbConnection();
SqlConnection mycon=new SqlConnection(dc.ConnectionString);
SqlDataAdapter mypter=new SqlDataAdapter(sql,mycon);
DataSet ds=new DataSet();
mycon.Open();
mypter.Fill(ds, FileName);
mycon.Close();
return ds;
}
}
关于asp.net中Datalist使用数字分页的实现方法的用户互动如下:
相关问题:
答: >>详细
相关问题:
答: >>详细
相关问题:
答: >>详细
- 【asp】asp.net url重写浅谈-net-url重写
- 【DataSet】DataSet、DataTable、DataRow区别详解
- 【asp】asp.net 动态添加多个用户控件-net-动态添
- 【ASP】ASP.NET中内嵌页面代码的一个问题-NET-内
- 【As】Asp.net中的页面乱码的问题-sp--pn-ne-et
- 【增加记录】asp.net中获取新增加记录的ID Access
- 【创建】ASP.NET Web API教程 创建域模型的方法详
- 【Asp】Asp.net 页面调用javascript变量的值-net-
- 【ASP】ASP.NET 5升级后如何删除旧版本的DNX-NET5
- 【404页面】ASP.NET设置404页面返回302HTTP状态码
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
