一般的分頁模式,都是直接用系統自帶的分頁。這樣在每次點選另一頁都會把所有的資料加載。資料很大時,嚴重影響頁面打開效率:
該代碼主要利用資料庫通路技術,傳該頁顯示的開始行和行數,讀取相應的資料行。直接綁定清單。
int TotalCountRecord;// 總記錄數目
int CurrentPage = 1;// 目前頁數
string PageItem = "20" ;// 預設每頁顯示的數量
public string pxfs = "pubdate desc" ;
private void LoadSearch()
{
string tj = "" ;
DataTable dt = new DataTable ();
int startRecord = (CurrentPage - 1) * Convert .ToInt32(PageItem);
dt = CBook .GetBookInfo(tj,pxfs, startRecord, Convert .ToInt32(PageItem));
TotalCountRecord = CBook .GetbookCount(tj);
if (dt != null ||dt.Rows.Count != 0)
{
GridView1.DataSource = dt ;
GridView1.DataBind();
PageInfo.InnerHtml = "" ;
}
}
/// <summary>
/// 給清單綁定分頁控制
/// </summary>
public void BuildPagers()
{
// 偏移量
int Step = 5;
int LeftNum = 0;
int RightNum = 0;
int PageCount = (int )Math .Ceiling((double )(TotalCountRecord) / Convert .ToInt32(PageItem));
if (CurrentPage - Step < 1)
LeftNum = 1;
else
LeftNum = CurrentPage - Step;
if (CurrentPage + Step > PageCount)
RightNum = PageCount;
else
RightNum = CurrentPage + Step;
string OutPut = "" ;
for (int i = LeftNum; i <= RightNum; i++)
{
if (i == CurrentPage)
OutPut += "<font color=red>" + i.ToString() +"</font>" ;
else
OutPut += "<a href='booklist.aspx'>[ " +i.ToString() + " ]</a>" ;
}
if (CurrentPage > 1)
OutPut = "<ahref='booklist.aspx? page=" + (CurrentPage - 1) + "'> 上一頁</a>" + OutPut;
if (CurrentPage < PageCount)
OutPut += "<ahref='booklist.aspx? page=" + (CurrentPage + 1) + "'> 下一頁</a>" ;
PageInfo.InnerHtml = OutPut;
}
( 其中:CBook 中的相關函數:
public static DataTable GetBookInfo(string tj,string px,int bs,int ps)
{
string sql = "select* from bookinfo where 1=1 " + tj;
if (px != "" )
sql += "order by " + px;
DataTable dt = CCommand .GetTable(sql,bs,ps);
return dt;
}
CCommand :中的函數
public static DataTable GetTable(string sql, int beginpage, int pagesize)
{
using (System.Data.SqlClient.SqlConnection sqlcn = new System.Data.SqlClient.SqlConnection (CCommand .conn))
{
try
{
return CDBV .ExecDataSet(sql, beginpage, pagesize);
}
catch (System.Exception ee)
{
TLssfyBase .WriteOptLog(sql+ee.Message);
return null ;
}
}
}
Cdbv 函數:
public static System.Data.DataTable ExecDataSet(string sql, int beginitem, int pagesize)
{
using (System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection (CCommand .conn))
{
SqlDataAdapter sa = new SqlDataAdapter (sql,cn);
System.Data.DataTable ds = new System.Data.DataTable ();
sa.Fill(beginitem, pagesize,ds);
return ds;
}
}
)