2011-11-21 140 views
1

我有一个gridview被填充在后端代码中。我正试图实现分页,但是当我尝试我的方式时,我什么都没有。 这里是我的一段代码:gridview控件和分页asp.net

public void generateTable() 
{ 
    conn.ConnectionString = connString; 
    SqlCommand comm = new SqlCommand("ViewBusinessInfo", conn); 
    comm.CommandType = CommandType.StoredProcedure; 
    comm.CommandTimeout = 2; 
    try 
    { 
     conn.Open(); 
     SqlDataReader rdr = comm.ExecuteReader(); 

     if (rdr.HasRows) 
     { 
      gvAssociation.DataSource = rdr; 
      gvAssociation.DataBind(); 
      gvAssociation.AllowPaging = true; 
      gvAssociation.PageSize = 10; 
      rdr.Close(); 
     } 
     else 
     { 
      lblResult.Text = "No businesses found."; 
      lblResult.Visible = true; 
     } 

    } 
    catch 
    { 
    } 
    finally 
    { 
     conn.Close(); 
    } 
} 

任何人都可以建议我在做什么错了,我不能让在GridView分页? Thx提前,Laziale

+0

对于初学者,您可以将'catch'改为'catch(Exception ex)',这样您就可以看到您是否真的获得了异常。一个空的catch块会隐藏你的异常。 –

回答

1

不能对DataReader使用分页。您应该使用DataAdapter将数据填充到数据集或数据表中。类似这样的:

SqlCommand myCommand = new SqlCommand("ViewBusinessInfo", conn); 
SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand)) 
DataTable dt = new DataTable(); 
myAdapter.Fill(dt); 
... 
0

设置AllowPagingPageSize声明,或做你打电话之前DataBind()

+0

我收到一个错误:数据源不支持服务器端数据分页 – Laziale

+1

http://forums.asp.net/p/1320427/2623013.aspx应该有所帮助。 – drdwilcox

2

gridview的allowPaging和pagesize属性可以添加到.aspx中,其中gridview标记存在。

<asp:GridView ID="gridView" OnPageIndexChanging="gridView_PageIndexChanging" AllowPaging="True" pagesize="10" runat="server" /> 

此外,为了使联系工作传呼,你必须在gridview_PageIndexChanging事件在GridView中添加以下代码:

protected void gridView_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    gridView.PageIndex = e.NewPageIndex; 
    gridView.DataBind(); 
} 

希望这是有帮助的。

+0

这不是问题。问题在于,如果启用了分页,则无法使用DataReader填充GridView。 – slfan

+0

是的,你是对的......它只是跳过了我的想法。使用DATAREADER作为数据库,不允许服务器端页面。一个将不得不使用DATAADAPTER-DATASET – Adi