//多重载分页类库
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using System.Data;
namespace TestProject.Class
{
/*
*数据分页类库
*/
public class DataPaging
{
static String strconn = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
//总条数和总页数
public static long[] allpage_sumcount(string allsqlcount, int pagecount)
{
SqlConnection con = new SqlConnection(strconn);
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(allsqlcount, con);
sda.Fill(ds, "name");
int allpage;
long sumcount = ds.Tables["name"].DefaultView.Count;//总条数
if (sumcount % pagecount == 0)
{
allpage = (int)sumcount / pagecount;
}
else
{
allpage = (int)sumcount / pagecount + 1;
}
long[] sumcount_allpage = { allpage, sumcount};//总条数和总页数
return sumcount_allpage;
}
//DataSource(string selectsql)---不分页
public static PagedDataSource DataSource(string selectsql)
{
SqlConnection con = new SqlConnection(strconn);
DataSet ds = new DataSet();
SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
sda.Fill(ds, "name");
PagedDataSource DataSource = new PagedDataSource();
DataSource.DataSource = ds.Tables["name"].DefaultView;
return DataSource;
}
//DataSource(string selectsql)---不分页加行号
public static PagedDataSource DataSource(string selectsql,string id,string rownum)
{
SqlConnection con = new SqlConnection(strconn);
DataSet ds = new DataSet();
selectsql = selectsql.ToLower();
//selectsql += " row_number() over(order by id desc) as rownum, ";
selectsql = selectsql.Insert(selectsql.IndexOf("select") + 7, " row_number() over(order by majorkeyid asc) as rownum, ");
selectsql = selectsql.Replace("majorkeyid", id);
selectsql = selectsql.Replace("rownum", rownum);
SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
sda.Fill(ds, "name");
PagedDataSource DataSource = new PagedDataSource();
DataSource.DataSource = ds.Tables["name"].DefaultView;
return DataSource;
}
//DataSource(string selectsql, string startcount, string endcount)---分页==根据唯一的条件升序排序
/*
* selectssql:基本查询sql
* id:唯一,可复合键。一般将唯一id作为排序
* startcount:分页的起始条数
* endcount:分页的结束条数
*/
public static PagedDataSource DataSource(string selectsql,string id, string startcount, string endcount)
{
SqlConnection con = new SqlConnection(strconn);
DataSet ds = new DataSet();
selectsql = selectsql.ToLower();
selectsql=selectsql.Insert(selectsql.IndexOf("select")+7,"* from (select row_number() over(order by majorkeyid asc) rownum,");//必须要有唯一的Id
selectsql = selectsql + " ) t where t.rownum>=@startcount and t.rownum <=@endcount ";
selectsql = selectsql.Replace("majorkeyid", id);
SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
sda.SelectCommand.Parameters.Add(new SqlParameter("@startcount", startcount));
sda.SelectCommand.Parameters.Add(new SqlParameter("@endcount", endcount));
sda.Fill(ds, "name");
PagedDataSource DataSource = new PagedDataSource();
DataSource.DataSource = ds.Tables["name"].DefaultView;
return DataSource;
}
//DataSource(string selectsql, string startcount, string endcount)---分页自选排序于排序状态
/*
* orderobj:排序的字段
* orderzt:排序的状态类型
*
*/
public static PagedDataSource DataSource(string selectsql, string id, string startcount, string endcount,string ordertype)
{
SqlConnection con = new SqlConnection(strconn);
DataSet ds = new DataSet();
selectsql = selectsql.ToLower();
selectsql = selectsql.Insert(selectsql.IndexOf("select") + 7, "* from (select row_number() over(order by majorkeyid asc) rownum,");//必须要有唯一的Id
selectsql = selectsql + " ) t where t.rownum>=@startcount and t.rownum <=@endcount ";
selectsql = selectsql.Replace("majorkeyid", id);
if (ordertype != "")
{
selectsql = selectsql.Replace("asc", ordertype);
}
SqlDataAdapter sda = new SqlDataAdapter(selectsql, con);
sda.SelectCommand.Parameters.Add(new SqlParameter("@startcount", startcount));
sda.SelectCommand.Parameters.Add(new SqlParameter("@endcount", endcount));
sda.Fill(ds, "name");
PagedDataSource DataSource = new PagedDataSource();
DataSource.DataSource = ds.Tables["name"].DefaultView;
return DataSource;
}
}
}
//前台.aspx页面代码
//后台.cs代码
string pagestr = "1";//当前页
int allpage = 0;//总页数
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pds(pagestr);
}
}
private void pds(string pagestr)
{
string sqlstr = " SELECT [id],[a_name],[a_pass],[a_header],[a_phone],[a_email] FROM [Admin] where 1=1 ";
long sumcount = 0;//总条数
int pagecount = 10;//每页数
allpage = (int)DataPaging.allpage_sumcount(sqlstr, pagecount)[0];//总页数
sumcount = DataPaging.allpage_sumcount(sqlstr, pagecount)[1];//总条数
string startcount = (pagecount * (Convert.ToInt32(pagestr) - 1) + 1).ToString();//开始条数
string endcount = (pagecount * (Convert.ToInt32(pagestr) - 1) + pagecount).ToString();//结束条数
//数据绑定显示
Pay_List.DataSource = DataPaging.DataSource(sqlstr, "id", startcount, endcount);
Pay_List.DataBind();
IsEnabled(sumcount);//分页按钮是否可用函数
}
protected void IsEnabled(long sumcount)
{
lblts.Text = sumcount.ToString();//显示总条数
lblpc.Text = allpage.ToString();//显示总页数
if (Convert.ToInt32(lblp.Text) > allpage)
{
lblp.Text = "1";
}
else
{
lblp.Text = pagestr;//当前第几页
}
if (lblp.Text == "1")
{
lbprev.Enabled = false;
lbfirst.Enabled = false;
}
else
{
lbprev.Enabled = true;
lbfirst.Enabled = true;
//lbnext.Enabled = true;
//lbend.Enabled = true;
}
if (lblpc.Text == "0" && lblp.Text == "1")
{
lbnext.Enabled = false;
lbend.Enabled = false;
lbprev.Enabled = false;
lbfirst.Enabled = false;
}
else if (lblp.Text == lblpc.Text)
{
lbnext.Enabled = false;
lbend.Enabled = false;
}
else
{
//lbprev.Enabled = true;
//lbfirst.Enabled = true;
lbnext.Enabled = true;
lbend.Enabled = true;
}
}
//分页
protected void lbfirst_Click(object sender, EventArgs e)
{
pagestr = "1";
pds(pagestr);
}
protected void lbprev_Click(object sender, EventArgs e)
{
pagestr = (Convert.ToInt32(lblp.Text) - 1).ToString();
pds(pagestr);
}
protected void lbnext_Click(object sender, EventArgs e)
{
pagestr = (Convert.ToInt32(lblp.Text) + 1).ToString();
pds(pagestr);
}
protected void lbend_Click(object sender, EventArgs e)
{
pagestr = lblpc.Text;
pds(pagestr);
}
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26481450/viewspace-749862/
,如需转载,请注明出处,否则将追究法律责任。