【牛腩】真假分页
? ? ? ? 牛腩新聞發布系統最后一講講了真假分頁,其實分頁我們并不陌生,在網頁中我們會經常看到,界面中不可能一次顯示所有的東西,這時候就需要分頁來幫忙,就像CSDN中評論頁的顯示就采用了分頁。
? ? ? ? 【知識點】
? ? ? ? 1、是什么?如下:
? ? ? ? ? 假分頁:從數據庫中一次性選擇所有數據,再將所有數據根據每頁顯示多少條記錄進行分類。其缺點就是在數據比較多第一次加載時時間比較長,但是可以減少與后臺的交互次數。
? ? ? ? ? 真分頁:只從數據庫中選擇當前頁的數據,跳轉下一頁是再次讀取,每次加載的速度比較快,但是與后臺交互次數比較多。
? ? ? ? 2、如何實現?
? ? ? ? ? ?下面只說一下真分頁的實現:
? ? ? ? ? ?首先需要添加控件:AspNetPager(下載:點擊打開鏈接?)
? ? ? ? ? 建立存儲過程:
<span style="font-size:18px;">-- ============================================= -- Author: <RU> -- Create date: <2015-05-17> -- Description: <新聞分頁> -- ============================================= ALTER PROCEDURE [dbo].[procNewsSelectPage] @start integer, @end integer AS BEGINwith tempt as (select ROW_NUMBER() over(order by id desc)as row,*from news T)select * from tempt where row between @start and @end SET NOCOUNT ON; END</span> ? ? ? ? ? DAL層調用存儲過程:(B層引用D層) <span style="font-size:18px;"> #region 新聞分頁顯示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</span> ? ? ? ? ? Web層:? ? ? ? ? 在新聞管理newsmanager.aspx中編寫如下代碼:設置分頁控件的樣式
<span style="font-size:18px;"><webdiyer:AspNetPager ID="anp" runat="server" FirstPageText="首頁" LastPageText="尾頁" NextPageText="下一頁" PrevPageText="上一頁" OnPageChanged="anp_PageChanged" PageSize="5" AlwaysShow="true"> </webdiyer:AspNetPager></span> ? ? ? ? ? 在新聞管理newsmanager.aspx.cs后臺編寫如下代碼: <span style="font-size:18px;">protected void Page_Load(object sender, EventArgs e){//判斷session里面是否存在管理員if (Session["admin"] != null && Session["admin"].ToString() == "ru"){//已登錄if (!Page.IsPostBack){DataTable dt = new DataTable();dt = new NewsManager().SelectAll();anp.RecordCount = dt.Rows.Count;BindNews();}}else{//未登錄Response.Redirect("login.aspx");}}#region 綁定新聞列表private void BindNews(){int start = anp.StartRecordIndex;int end = anp.EndRecordIndex;repNews.DataSource = new NewsManager().SelectPage(start, end);repNews.DataBind();}#endregionprotected void anp_PageChanged(object sender, EventArgs e){BindNews();} </span>? ? ? ? ? 這樣就可以實現了,效果如下:
? ? ? ? 【小結】
? ? ? ? 真假分頁開始本不想實現了,系統都發布成功了,最后聽牛腩老師講講就算了,后來一想,還是實現一下吧!想想別的網頁,分頁的功能是必不可少的,以后肯定也會用到,早晚會用到,現在有機會為什么不實現一下呢。想半天也沒用,還是自己動手試試比較實在,其實實現了之后也就覺得沒什么了。
總結
- 上一篇: E-R图画法解析----概念模型的一种表
- 下一篇: 高仿人人网客户端安卓源码