2011-10-30 257 views
11

我已經創建:GridView控件「GridView1」激發事件PageIndexChanging這是沒有處理

  • 一個母版頁和一個內容頁面調用詳細信息。
  • 按鈕點擊事件,以網格視圖顯示數據。
  • 在網格視圖中,列是自動生成的。
  • 我想在網格視圖中顯示11列,但它大於頁面 的大小。

該怎麼辦?

我已經爲數據庫連接代碼創建了sql helper文件並調用該方法,而不是使用sqldatasource進行連接。

當我試圖做分頁,得到錯誤

GridView控件 'GridView1' 這是不 處理解僱事件PageIndexChanging。

回答

20

您需要在處理PageIndexChanging事件的代碼後面聲明一個方法。

事情與此類似:

protected void GridView1_PageIndexChanging (object sender, GridViewPageEventArgs e) 
{ 
    GridView1.PageIndex = e.NewPageIndex; 
    bindGridView(); //bindgridview will get the data source and bind it again 
} 

private void bindGridView() 
{ 
    GridView1.DataSource=getData(); 
    GridView1.DataBind(); 
} 

提供了示例代碼:

protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
     GridView1.PageIndex = e.NewPageIndex; 
     bindGridView(); //bindgridview will get the data source and bind it again 
    } 

    protected void Page_Load(object sender , EventArgs e) 
    { 
     if(!IsPostBack) 
     bindGridView(); 

    } 
    //this is some sample data 
    private void bindGridView() 
    { 
     DataTable t = new DataTable(); 
     t.Columns.Add("Col1"); 
     t.Columns.Add("Col2"); 
     DataRow r = null; 
     for (int i = 0; i < 25; i++) 
     { 
      r = t.NewRow(); 
      r.ItemArray = new object[] { "Val" + i, " Another " + i }; 
      t.Rows.Add(r); 
     } 
     GridView1.DataSource = t; 
     GridView1.DataBind(); 
    } 

這是標記:

<asp:GridView OnPageIndexChanging="GridView1_PageIndexChanging" AllowPaging="true" PageSize="10" ID="GridView1" runat="server" AutoGenerateColumns="true"> 

產生以下:

enter image description here

+0

亞我做到了,但沒有效果。保護無效GridView1_PageIndexChanging(對象發件人,GridViewPageEventArgs E) { //串S1 = 「來自主選擇*」; //數據集DS = SqlHelper.GetDataSet(CommandType.Text,S1, 「主」); // DataTable table = ds.Tables [「master」]; //如果(table.Rows.Count> 0) // {// = GridView1.DataSource DS; // GridView1.DataBind(); //} GridView1.PageIndex = e.NewPageIndex; //綁定網格 GridView1.DataBind(); } 和aspx文件 –

+0

@JuiTest這個代碼發佈到你的答案,而不是作爲一個評論。在那裏看到它會更有幫助。 – Icarus

+0

我無法回答自己的問題。 –

0

爲了解決這個問題,我不得不仔細看看我的數據源和數據鍵。我有一組從SQL Server返回的記錄,我正在做的是將它們綁定到POCO。這個類有幾個Integer類型的公共屬性。這些整數是我在網格上的數據鍵。我用一個字符串替換它們的類型,而不是繞過鑄造問題。

+0

這可能會做出更好的評論。它對接受的答案沒有多大幫助。 – David

1

這是最終的答案:

Imports System.Collections.Generic ' library 

Protected Sub grdEmployees_PageIndexChanging1(ByVal sender As Object, ByVal e As 
System.Web.UI.WebControls.GridViewPageEventArgs) Handles grdEmployees.PageIndexChanging 
    grdEmployees.PageIndex = e.NewPageIndex 
    LoadEmployeeList() 'FUNCTION FOR DATASET 
    grdEmployees.DataBind() 

End Sub 
2

用於分頁,您可以使用OnPageIndexChanging這個....

對於實例

,你必須使用OnPageIndexChanging = 「gvdetails_PageIndexChanging」在您的GridView中...

您必須將代碼寫入代碼後面的代碼Ë

protected void gvdetails_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    gvdetails.PageIndex = e.NewPageIndex; 
    BindData(); 
} 

更多的細節,你可以在這裏查看以下鏈接我用我的文章頁面指數變化...

Here I use PageIndexChange

我希望這將幫助你....與他人分享...謝謝!

0

您只需添加到您的代碼:

protected void GridViewTrsEmail_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    GridViewTrsEmail.PageIndex = e.NewPageIndex; 
    GridViewTrsEmail.DataBind(); 


} 
相關問題