public DataTable BindNumericPageBarAndGetDataTable()
{
SqlConnection conn = null;
try
{
try
{
conn = new SqlConnection(_ConnectionString);
conn.Open();
}
catch (Exception ex)
{
string str=ex.ToString();
}
SqlDataAdapter Da;
DataSet ds;
DataSet dsCount = new DataSet();
//**********************************************************************
//** 分页基本参数
//**********************************************************************
int PageSize;
if (_PageSize == 0)
{
PageSize = 10;
}
else
{
PageSize = _PageSize;
}
/////////总记录数
int TotalCount = 0;
Da = new SqlDataAdapter(Sql, conn);
Da.Fill(dsCount);
TotalCount = dsCount.Tables[0].Rows.Count;
dsCount.Clear();
dsCount.Dispose();
/////////总页数
int TotalPage = Convert.ToInt32(TotalCount / PageSize + 1);
/////////当前页
int CurPage;
if (Request.QueryString["Page"] == "")
{
CurPage = 1;
}
else
{
CurPage = Convert.ToInt32(Request.QueryString["Page"]);
}
if (CurPage <= 0)
{
CurPage = 1;
}
if (CurPage > TotalPage)
{
CurPage = TotalPage;
}
GoPage.Text = CurPage.ToString();
/////////开始ID号 da.Fill(ds, StartID, PageSize, "Life"),即从第几条开始填充数据
int StartID;
if (TotalCount > PageSize)
{
StartID = PageSize * (CurPage - 1);
}
else
{
StartID = 0;
}
//**********************************************************************
//** 上一页 下一页 分页格式
//**********************************************************************
lblCurrentPage.Text = "第<font color=red>" + CurPage.ToString() + "</font>页";
lblTotalPage.Text = "共<font color=red>" + Convert.ToString(TotalPage) + "</font>页";
lblPageSize.Text = "<font color=red>" + PageSize.ToString() + "</font>条/页";
lblTotalCount.Text = "共<font color=red>" + Convert.ToString(TotalCount) + "</font>条";
if (CurPage > 1 & TotalPage > 1)
{
lnkPrev.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage - 1) + URL;
lnkFirst.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=1" + URL;
}
if (CurPage < TotalPage & TotalPage > 1)
{
lnkNext.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPage + 1) + URL;
lnkLast.NavigateUrl = Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(TotalPage) + URL;
}
//**********************************************************************
//** 数字分页格式
//**********************************************************************
///////数字分页步长///////
//********************************************原理示意图*******************************************************************
//** CurPageBarLocation
//**...|______↓____↓_____↓_______|_______________...........______|_32_________35___________39__|______.......
//** |←------ PageBarStep -----→| ↑ ↑
//** CurPageBarStart CurPageBarEnd
//*************************************************************************************************************************
//每个页码段的页码数
if (TotalCount > PageSize)
{
int PageBarStep;
if (_NumericPageBarStep == 0 )
{
PageBarStep = 5;
}
else
{
PageBarStep = _NumericPageBarStep;
}
//当前页所在的页码段,0开始,int()只取整数部分,不四舍五入
int CurPageBarLocation = Convert.ToInt32(CurPage / PageBarStep);
int CurPageBarStart;
int CurPageBarEnd;
if (CurPage == PageBarStep * CurPageBarLocation)
{
//当前页刚好可以整除PageBarStep,即刚好处在当前页码段的最后一页
CurPageBarStart = (PageBarStep * (CurPageBarLocation - 1)) + 1;
CurPageBarEnd = CurPage;
}
else
{
CurPageBarStart = PageBarStep * CurPageBarLocation + 1;
//分页条开始页码数
CurPageBarEnd = PageBarStep * (CurPageBarLocation + 1);
//分页条结束页码数
}
if (CurPageBarEnd > TotalPage)
{
CurPageBarEnd = TotalPage;
}
while (CurPageBarStart <= CurPageBarEnd)
{
if (CurPageBarStart == CurPage)
{
lblNumberPage.Text += " <b><font color=red>" + CurPageBarStart.ToString() + "</font></b>";
}
else
{
lblNumberPage.Text += " <a href='" + Request.CurrentExecutionFilePath + "?Page=" + Convert.ToString(CurPageBarStart) + _URL + "'>" + CurPageBarStart.ToString() + "</a>";
}
CurPageBarStart += 1;
}
}
//**********************************************************************
//** 绑定数据
//**********************************************************************
Da = new SqlDataAdapter(Sql, conn);
ds = new DataSet();
if (TotalCount > PageSize)
{
Da.Fill(ds, StartID, PageSize, "MyDataSet");
}
else
{
Da.Fill(ds, "MyDataSet");
}
conn.Close();
conn.Dispose();
return ds.Tables[0];
}
finally
{
if ((conn != null))
((IDisposable)conn).Dispose();
}
}