2012-06-11 148 views
1

我已經閱讀了幾篇文章和教程,但我無法弄清楚這一點。一切都基本上說,「哦,只要打開AllowPaging,你就完成了!」當我這樣做時,是的,我可以在設計視圖中的GridView下看到分頁控件,但是當我編譯時,我看不到正在運行的站點中的頁碼。ASP.Net GridView不顯示頁碼

我發現有一點與所有例子不同,我從代碼隱藏的角度來做數據工作。因此,我的GridView很簡單:

<asp:GridView ID="gvlatest" runat="server" Width="99%" AllowSorting="True" 
       onrowdatabound="gvlatest_RowDataBound" onsorting="gvlatest_Sorting" 
       AllowPaging="True" PageSize="2" /> 

我這樣做,從後面的數據工作的意思,是所有列的一切,從代碼構建成一個DataTable,然後我設置了GridView的數據源到數據表。例如,一個非常簡化版本我有:

DataTable temptable = new DataTable(); 
DataColumn titlecol = new DataColumn(); 
titlecol.ColumnName = "Title"; 
temptable.Columns.Add(titlecol); 
gvlatest.DataSource = temptable; 
gvlatest.DataBind(); 

這只是一個個人喜好我猜,並說實話我其實從來沒有學會如何使用DataSource控件並使得所有的例子正在使用,你在使用的列.aspx文件,數據源等,所以我猜我的問題在於大方向建立在GridView ...

的問題是,什麼我做錯了嗎?爲什麼頁碼不顯示?我真的需要將「AllowPaging」設置爲true嗎?

+0

有多少行沒有在表中? – adatapost

+0

大約有30個。查詢數據庫和構建DataTable,然後將該DataTable作爲GridView的DataSource應用於Page_Load。 – CptSupermrkt

回答

3

頁面調度工作,你的數據源必須支持它。如果它不像DataTable一樣,那麼你必須自己做這個。

此代碼應該有所幫助。

OnPageIndexChanging="myGridview_PageIndexChanging" 

protected void myGridview_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridView gv = (GridView)sender; 
    DataView dv = gv.DataSource as DataView; 
    DataTable dataTable = dv.Table; 

    gv.DataSource = myDataTable; 
    gv.PageIndex = e.NewPageIndex; 
    gv.DataBind(); 
} 
+0

這樣做的伎倆,但現在我遇到了一個完全奇怪的問題。在我的RowDataBound事件中,我有一行:e.Row.Cells [0] .Visible = false; (該列是ID列,我希望它出現在gridview中,但不可見)。如果此行存在,則不會顯示分頁控件。註釋掉這一行,它們顯得很好...... – CptSupermrkt

+1

asp.net網格需要你的主鍵來知道哪一行發生了變化。你不能讓它們看起來爲false,導致它們不能在html中呈現。使用css來隱藏它。樣式'display:none'將會做到這一點。 – nunespascal

0

您可以禁用特定的列,並添加分頁

protected void Gridview1_RowDataBound(object sender, GridViewRowEventArgs e) 
     { 

      if (e.Row.RowType == System.Web.UI.WebControls.DataControlRowType.DataRow) 
//----------------------------------Grid view column invisible------------------------------------------------------------ 
       if (Request.QueryString.Get("show") == "all") 
        GridView1.Columns[0].Visible = true; 
       else 
        GridView1.Columns[0].Visible = false; 

       //------------------------------------------------------------------------------------------------------------------------- 

} 

protected void Gridview1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
     { 

      GridView1.PageIndex = e.NewPageIndex; 
      gvbind();// Grid View Binded 

     } 

// Source Code 
allowpaging="true" OnPageIndexChanging="Gridview1_PageIndexChanging" pagesize="2"