ASP.NET 数据列表控件的分页总结(一)自定义方法分页和PageDataSo
在Asp.net中,提供了三个功能强大的列表控件:GridView、DataList和Repeater控件,但其中只有GridView控件提供分页功能。虽然DataGrid提供了分页功能,不过看上去功能有限,但是我们可以通过GridView的一些属性来获取状态以及增加首页、尾页功能按钮。如果在速度效率不是很讲究的情况下,由DataGrid自己管理分页还是不错的,付出的代价就是要把整个相关数据取出来后再删选指定页的数据。好处就是开发速度快,不需要写分页的存储过程。所以若需要追求执行效率,而且数据量比较大的情况下建议使用GridView的自定义分页功能。若数据量不是很大,需要追求更多的页面功能和样式,那么相对GridView来说,DataList和Repeater控件具有更高的样式自定义性,所以很多时候我们喜欢使用DataList或Repeater控件来显示数据。现在我采用手动分页,对这三个控件作一比较。如下:
(1).使用GridView手动分页。
通过下拉框来控制分页。
前台代码:
1<body> 2 <form id="form1" runat="server"> 3 <p> 4 <asp:GridView ID="gvShow" runat="server" OnPageIndexChanging="gvShow_PageIndexChanging" AllowPaging="True" PageSize="2"> 5 </asp:GridView> 6 <br /> 7 </p> 8 <asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="True" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged"> 9 </asp:DropDownList> 10 </form> 11</body>
后台代码:
using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Data.SqlClient; public partial class _Default : System.Web.UI.Page { static SqlConnection con; static SqlDataAdapter sda; static SqlCommand cmd; static DataSet ds; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Bind(); //记住这句不能丢,否则行号会累加在下拉框中 DropDownList1.Items.Clear(); for (int i = 1; i< gvShow.PageCount; i++) { DropDownList1.Items.Add(i.ToString()); } } } private void Bind() { //gvShow.AllowPaging = true; //gvShow.PageSize = 2; gvShow.DataSource =BindData(); gvShow.DataBind(); } protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) { //关键代码 gvShow.PageIndex = Convert.ToInt32(DropDownList1.SelectedValue)-1; Bind(); } protected void gvShow_PageIndexChanging(object sender, GridViewPageEventArgs e) { gvShow.PageIndex = e.NewPageIndex; Bind(); } private static void Init() { //数据库连接语句 con = new SqlConnection("Data Source=.;database=数据库名;uid=用户ID;pwd=用户密码"); ds = new DataSet(); try { con.Open(); } catch { throw new Exception(); } } public static DataSet BindData() { Init(); string sql = "select * from book"; try { sda = new SqlDataAdapter(sql, con); sda.Fill(ds, "book"); return ds; } catch { throw new Exception(); } } }
ASP.NET 2.0在SQL Server 2005上自定义分页
ASP.NET 2.0(C#)(8) - DataSourceControl(