AspNetPager分頁記錄顯示執行個體,aspnetpager分頁
在牛腩視頻中的最後一集,涉及到了一個外部控制項AspNetPager實現分頁記錄顯示的一個小例子沒有完成,據瞭解分頁顯示功能在軟體設計中是很重要的一個功能,因此,在這裡講未完成的工作完成。
在視頻中講到,gridview的分頁功能屬於假分頁,為什麼呢?因為每次分頁必須查詢完資料庫中所有的記錄,這樣如果資料量過大,將會造成很大不便。所以選擇了AspNetPager這個控制項。
其實,這個控制項只是提供了一個分頁功能,它並不能顯示資料,因此,它還是需要與gridview結合起來使用才可以完全實現我們分頁的這個功能。
當然gridview這個控制項的使用,視頻中有用到,但是由於多次複製粘貼的緣故,到後來很難回憶出當時到底是如何使用的了。其實這個控制項主要有這麼幾個關鍵注意的點,如下:
1、在編輯列時,由於過長代碼,可選擇在設計檢視中進行編輯
2、若想與css結合設計表格的樣式,可將列轉換為自訂模板列如所示:
3、autogenericcolumns這個屬性的應用
好了,瞭解了控制項使用後,我們就來利用它們實現分頁製作吧!
首先,通過預存程序來編寫資料庫查詢語句,如下:
ALTER PROCEDURE [dbo].[partPage]@startIndex int, --查詢開始記錄數@endIndex int --結束記錄數ASBEGINwith temptbl as (SELECT ROW_NUMBER() OVER (ORDER BY id desc)AS 行號, * from news --使得記錄按順序排列,按行號查詢)SELECT * FROM temptbl where 行號 between @startIndex and @endIndexEND
編寫完預存程序後,便是D層要寫的代碼,如下:
public DataTable SelectByPage(int startIndex,int endIndex) { DataTable dt = new DataTable(); string cmdText = "partPage"; SqlParameter[] paras = new SqlParameter[]{ new SqlParameter ("@startIndex",startIndex ), new SqlParameter ("@endIndex",endIndex ) }; dt = sqlhelper.ExecuteQuery(cmdText, paras, CommandType.StoredProcedure); return dt; }
sqlhelper中的代碼不便,如下:
/// <summary> /// 執行帶參數的查詢語句 /// </summary> /// <param name="sql">sql語句</param> /// <param name="paras">參數</param> /// <returns>datatable</returns> public DataTable ExecuteQuery(string cmdText,SqlParameter []paras,CommandType ct) { DataTable dt = new DataTable(); cmd = new SqlCommand(cmdText , GetConn()); cmd.Parameters.AddRange(paras); cmd.CommandType = ct; using (sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection)) { dt.Load(sdr); } return dt; }
好了,後台大部分工作已準備齊全,就只剩U層代碼了:
聲明:在這裡是按照視頻中那樣在設計中指定了每頁顯示5條新聞,如果在代碼中寫也是可以的,可以寫入asp.pagesize=5;
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack ) { DataTable dt = new DataTable(); dt = new NewsManager().SelectAll();//選擇所有新聞 anp.RecordCount = dt.Rows.Count; //記錄總數 //開始綁定記錄 int startIndex=anp.StartRecordIndex ; //開始記錄數 int endIndex=anp.EndRecordIndex ; //結束記錄數 dt = new NewsManager().SelectByPage(startIndex, endIndex); gvNews.DataSource = dt; gvNews.DataBind(); } } protected void anp_PageChanged(object sender, EventArgs e) { Response.Write("開始記錄數為:" + anp.StartRecordIndex + "結束記錄數為:" +anp.EndRecordIndex ); }
好了,至此,基本上的架構就已經實現了,那麼我們來看一下效果吧!
看著還不錯吧???
vs08裡怎使用AspNetPager分頁控制項對動態查詢的結果進行分頁最好要有執行個體
首先<%@ Register Assembly="AspNetPager" Namespace="Wuqi.Webdiyer" TagPrefix="webdiyer" %>,是必須的 放在aspx檔案的第二行。
然後 <webdiyer:AspNetPager ID="AspNetPager1" runat="server" Width="100%" UrlPaging="true"
ShowPageIndexBox="Always" PageIndexBoxType="DropDownList" TextBeforePageIndexBox="跳轉: "
HorizontalAlign="right" PageSize="12" OnPageChanged="AspNetPager1_PageChanged"
EnableTheming="true">
</webdiyer:AspNetPager>
放到你要的分頁的位置上。
最後在cs的page_load事件裡綁定 AspNetPager1.RecordCount = 你所需檢索的資訊的總數。
如果你想實現無重新整理的話,可以使用jq的回調自動無重新整理顯示。
我用的ASPnetpager 分頁 我搜尋條件出來以後顯示三頁資料 點下一頁為何 又載入的是全部資料?
你用的是post方式提交的,改成get方式就可以。
用post方式提交也可以,你必須要把參數記下來,分頁時也要把相應的參數傳遞過去,這才管用。