2012-02-16 85 views
-1

我在asp.net中有一個網格,在asp.net裏面,我是綁定數據的鏈接按鈕,當點擊鏈接按鈕時,我需要在代碼後面調用一個方法。附加的事件不是在我的代碼中。我怎麼能解決這個問題?事件attched鏈接裏面的gridview按鈕不工作?

我的代碼是這樣的相似,

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      LinkButton link = new LinkButton(); 
      link.Text = e.Row.Cells[0].Text; 
      link.CommandArgument = "Hello"; 
      link.Click += new EventHandler(this.onLinkClick); 
      e.Row.Cells[0].Controls.Add(link); 
     } 

    } 

    protected void onLinkClick(object sender, EventArgs e) 
    { 
     LinkButton btn = (LinkButton)(sender); 
     string value = btn.CommandArgument; 
     TextBox1.Text=value; 
    } 
+0

'Not working'as'Not firing'? – Shai 2012-02-16 11:35:05

+0

是的沒有射擊。 – niknowj 2012-02-16 11:36:37

回答

1

你必須調用結合源到GridView每次在頁面加載

前的功能。

protected void Page_Load(object sender, EventArgs e) 
{ 
    PopulateGridView(); 
} 
+0

網格正確加載,但附加到gridview數據的事件沒有觸發 – niknowj 2012-02-16 11:37:29

+0

我知道...但是當頁面Post Back ...事件不再附加到控件..你必須調用函數將事件綁定到控件的每個帖子後面 – 2012-02-16 11:38:17

+0

@niknowj發生了什麼仍然沒有發射? – 2012-02-16 11:53:18

0

手柄的GridViewRowCommand事件來處理按鈕的「事件」,並要添加LinkButton然後動態數據綁定必須是在Page_InitPage_Load執行。

protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      LinkButton link = new LinkButton(); 
      link.Text = e.Row.Cells[0].Text; 
      link.CommandArgument = "Hello"; 
      e.Row.Cells[0].Controls.Add(link); 
     } 
    } 

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
    { 
     string value = e.CommandArgument.ToString(); 
     TextBox1.Text=value; 
    } 
1

因爲沒有添加鏈接按鈕的邏輯(我猜你必須爲每條記錄添加它)爲什麼不在設計時添加它?

<asp:GridView ID="GridView1" runat="server"> 
     .... 
    <ItemTemplate> 
      <asp:LinkButton ID="LinkButton1" runat="server" onclick="LinkButton1_Click">LinkButton</asp:LinkButton>    
    </ItemTemplate> 
    ...... 
    </asp:GridView> 

請確保AutoEventWireup="true"在頁面上

+0

1爲一個替代的解決方案,以使用內置「的」 – 2012-02-16 12:53:49

0

您需要連接在GridView的RowCreated事件動態按鈕的事件處理程序,否則將不火。然後在RowDataBound事件處理程序中使用「FindControl」。就我個人而言,我根本不喜歡這個模型,但有時它是不可避免的。

您應該使用GridView的<asp:ButtonField>和網格的RowCommand事件。這樣,你就不是創建動態控制和接線事件的人。

Here's an article on how to use it.