正常情況下不要用Gridview內建的分頁,執行效率不高,尤其對海量資料進行分頁時,需要載入很長時間才能顯示。但是,如果我們既想利用Gridview顯示資料又要提高資料分頁效能怎麼辦,下面的Asp.net2.0海量預存程序分頁控制項可以解決你問題。
Asp.net2.0海量預存程序分頁控制項利用預存程序進行分頁,將查詢到的結果根據結果的主鍵或唯一ID進行索引,分頁時僅僅是對索引進行分頁,而無需載入所有要顯示的資料,因此大大提高了效能。
下面介紹一下該控制項的使用方法:
1.頁面代碼
<%@ Register Assembly="ProcdurePagerNet2_0" Namespace="ProcdurePagerNet2_0" TagPrefix="cc1" %>
<cc1:pager id="pager1" runat="server" oncommand="pager_Command" showfirstlast="true"></cc1:pager>
2.cs代碼
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
pager1.CurrentIndex = 1;
BindRepeaterAdvance(1);
}
}
public void pager_Command(object sender, CommandEventArgs e)
{
int currnetPageIndx = Convert.ToInt32(e.CommandArgument);
pager1.CurrentIndex = currnetPageIndx;
BindRepeaterAdvance(currnetPageIndx);
}
private void BindRepeaterAdvance(int pageNo)
{
SqlConnection cn = new SqlConnection(gloab.getConnString());
SqlCommand Cmd = new SqlCommand("dbo.GetPaged_News", cn);
Cmd.CommandType = CommandType.StoredProcedure;
SqlDataReader dr;
Cmd.Parameters.Add("@PageSize", SqlDbType.Int, 4).Value = pager1.PageSize;
Cmd.Parameters.Add("@CurrentPage", SqlDbType.Int, 4).Value = pageNo;
Cmd.Parameters.Add("@ItemCount", SqlDbType.Int).Direction = ParameterDirection.Output;
SqlParameter Fname_1 = Cmd.Parameters.Add("@Title", SqlDbType.NVarChar);
Fname_1.Direction = ParameterDirection.Input;
Fname_1.Value = txt_Title.Text.Trim();//顯示根據標題查詢的結果
cn.Open();
dr = Cmd.ExecuteReader(CommandBehavior.CloseConnection);
Grid_News.DataSource = dr;
Grid_News.DataBind();
Int32 _totalRecords = Convert.ToInt32(Cmd.Parameters["@ItemCount"].Value);
pager1.ItemCount = _totalRecords;
dr.Close();
cn.Close();
SqlConnection.ClearPool(cn);
}
示範地址:http://www.mycjweb.com/CJSearch.aspx
需要完整源碼和控制項的給我發郵件:y.xwx@163.com