牛腩新聞釋出系統 (五)如何讓你的文章學會分頁
阿新 • • 發佈:2018-12-12
分頁
在軟體開發的過程中,那些最常見的東西我們常常會忽略。例如這個"分頁"。“分頁”也有“真假”之說。
假分頁:從資料庫中一次性選擇所有資料,再將所有資料根據每頁顯示多少條記錄進行分類。其缺點是在資料比較多時,載入時間會長,優點使可以減少和後臺的互動次數。
真分頁:只從資料庫中選擇當前頁的資料,跳轉下一頁是再次讀取。缺點是與後臺互動次數比較多,優點使每次載入速度比較快。
接下來筆者就以真分頁為例,實現下圖新聞的分頁
實現分頁
<1>編寫儲存過程。分頁針對的是查詢到的資料,所以這裡涉及到資料庫的操作。按照如下程式碼,新建你的儲存過程
<2> 在D層呼叫儲存過程。筆者在D層NewsDAO檔案中編寫程式碼,目的是實現顯示出的新聞內容分頁
# region 顯示新聞分頁 /// <summary> /// 新聞分頁顯示 /// </summary> /// <param name="start">開始</param> /// <param name="end">結束</param> /// <returns></returns> public DataTable SelectPage(int start, int end) { DataTable dt = new DataTable(); string cmdText = "procNewsSelectPage"; SqlParameter[] paras = new SqlParameter[] { new SqlParameter("@start",start), new SqlParameter("@end",end), }; dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure); return dt; } #endregion
<3>在Web層中新增分頁控制元件AspNetPager,並完善此控制元件程式碼。筆者在newsmanager.aspx檔案中新增的程式碼
<webdiyer:AspNetPager ID="anp" runat="server" FirstPageText="首頁" LastPageText="尾頁" NextPageText="下一頁" PrevPageText="上一頁" OnPageChanged="anp_PageChanged" PageSize="5" AlwaysShow="true"> </webdiyer:AspNetPager>
<4>B層對應程式碼。筆者寫在了B層NewsManager檔案裡
#region 新聞分頁
//分頁
public DataTable SelectNewsByPage(int start, int end)
{
return ndao.SelectPage(start, end);
}
#endregion
<5>在Web層新聞管理newsmanager.aspx.cs後臺編寫程式碼。由於後臺檔案中其他功能已寫入程式碼,筆者只列出分頁功能需要加的程式碼
protected void Page_Load(object sender, EventArgs e)
{
//判斷session裡面是否存在管理員
if (Session["admin"] != null && Session["admin"].ToString() == "niunan")
{
//已登入
if (!Page.IsPostBack)
{
anp.RecordCount = dt.Rows.Count;
BindNews();
}
}
else
{
}
}
#region 繫結新聞列表
private void BindNews()
{
int start = anp.StartRecordIndex;
int end = anp.EndRecordIndex;
repNews.DataSource = new NewsManager().SelectNewsByPage(start,end);
repNews.DataBind();
}
#endregion
protected void anp_PageChanged(object sender, EventArgs e)
{
BindNews();
}
<6>重新生成下檔案,分頁功能便出來了~