ASP.NET 数据列表控件的分页总结(一)自定义方法分页和PageDataSo

2012-07-04
浏览
导读:在Asp.net中,提供了三个功能强大的列表控件:GridView、DataList和Repeater控件,但其中只有GridView控件提供分页功能。虽然DataGrid提供了分页功能,不过看上

在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    &nbsp;</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: 执行Web标准以便更加易于访问

ASP.NET 2.0在SQL Server 2005上自定义分页

ASP.NET 2.0(C#)(8) - DataSourceControl(

ASP.NET 2.0(C#)(7) - Profile(存储用户配

ASP.NET 2.0(C#)(6) - Membership&Role