當前位置:編程學習大全網 - 行動軟體 - 在dal裏面寫aspnetpager分頁控件的方法怎麽寫

在dal裏面寫aspnetpager分頁控件的方法怎麽寫

分頁是Web應用程序中最常用到的功能之壹,在ASP.NET中,雖然自帶了壹個可以分頁的DataGrid(asp.net 1.1)和GridView(asp.net 2.0)控件,但其分頁功能並不盡如人意,如可定制性差、無法通過Url實現分頁功能等,而且有時候我們需要對DataList和Repeater甚至自定義數據綁定控件進行分頁,手工編寫分頁代碼不但技術難度大、任務繁瑣而且代碼重用率極低,因此分頁已成為許多ASP.NET程序員最頭疼的問題之壹。

今天閑來無事就學習學習了aspNetPager分頁控件的用法:

AspNetPager針對ASP.NET分頁控件的不足,提出了與眾不同的解決asp.net中分頁問題的方案,即將分頁導航功能與數據顯示功能完全獨立開來,由用戶自己控制數據的獲取及顯示方式,因此可以被靈活地應用於任何需要實現分頁導航功能的地方,如為GridView、DataList以及Repeater等數據綁定控件實現分頁、呈現自定義的分頁數據以及制作圖片瀏覽程序等,因為AspNetPager控件和數據是獨立的,因此要分頁的數據可以來自任何數據源,如SQL Server、Oracle、Access、mysql、DB2等數據庫以及XML文件、內存數據或緩存中的數據、文件系統等等。

1.首先下載aspnetpager控件,我這兒的版本是6.0.0.0 點擊下載

2.把控件加到項目中(添加自定義控件的方法),並把它拖放到頁面上:

<webdiyer:AspNetPager ID="AspNetPager1" runat="server"

AlwaysShow="True" //總是顯示分頁控件,即使要分頁的數據只有壹頁

OnPageChanged="AspNetPager1_PageChanged" //分頁發生改變時觸發事件

UrlPaging="true" //通過URL傳遞分頁信息的方式來分頁。如果設為true,禁用ViewState也能達到效果。如果設置為false,禁用了viewstate則無法實現分頁.

NumericButtonTextFormatString="[{0}]" //頁索引數字顯示的格式

ShowCustomInfoSection="Left"> //顯示當前頁和總頁數信息,默認值不顯示,為left則將顯示在頁索引前,為right則為頁索引後 </webdiyer:AspNetPager>

3.Page_Load事件:

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

BindGridView();

}

}

BindGridView方法如下:

public void BindGridView()

{

string sql = "select * from gw_newsletter_group";//自定義的SQL語句

int recordcount;

DataSet ds = GetPage(sql, this.AspNetPager1.CurrentPageIndex, this.AspNetPager1.PageSize,out recordcount);

this.AspNetPager1.RecordCount = recordcount;

this.GridView1.DataSource = ds;

this.GridView1.DataBind();

AspNetPager1.CustomInfoHTML = "記錄總數:<b>" + AspNetPager1.RecordCount.ToString() + "</b>";

AspNetPager1.CustomInfoHTML += " 總頁數:<b>" + AspNetPager1.PageCount.ToString() + "</b>";

AspNetPager1.CustomInfoHTML += " 當前頁:<font color=\"red\"><b>" + AspNetPager1.CurrentPageIndex.ToString() + "</b></font>";

}

其中的GetPage方法代碼如下:(GetConnection()是返回壹個SqlConnection對象)

/// <summary>

/// Get Data By CurrentPage

/// </summary>

/// <param name="sql">SQL</param>

/// <param name="currentPage">current Page</param>

/// <param name="pagesize">Page Size</param>

/// <param name="recordcount">Total Record</param>

/// <returns></returns>

public DataSet GetPage(string sql, int currentPage, int pagesize,out int recordcount)

{

SqlDataAdapter ada = new SqlDataAdapter(sql, GetConnection());

DataSet ds = new DataSet();

int startRow = (currentPage - 1) * pagesize;

ada.Fill(ds, startRow, pagesize, "table");

recordcount = GetPageRecord(sql);

return ds;

}

GetPageRecord方法:(返回總的記錄數)

public int GetPageRecord(string sql)

{

sql = System.Text.RegularExpressions.Regex.Replace(sql, "ORDER BY.*", "");

sql = "select count(*) from (" + sql + ") as temp";

SqlCommand cmd = new SqlCommand(sql, GetConnection());

cmd.Connection.Open();

int recordcount = (int)cmd.ExecuteScalar();

return recordcount;

}

這裏註意要去掉”Order By“的字符串(聚合函數不能和"ORDER BY"連用)

4.另外:還有個事件:

protected void AspNetPager1_PageChanged(object sender, EventArgs e)

{

BindGridView();

}

  • 上一篇:古惑女之決戰江湖的影片評價
  • 下一篇:太極宗師之太極門什麽時候上映,播出時間,更新時間
  • copyright 2024編程學習大全網