2011-11-21 100 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