2012-11-08 108 views
0

我在我的頁面上有一個formview控件中的按鈕。按鈕添加事件點擊事件

因爲按鈕包含在formview中,所以我的代碼無法看到它。

所以我這樣做:

Dim btnSave As Button = CType(fvCourse.FindControl("btnSave"), Button) 

然後,我添加了一個事件處理程序是這樣的:

AddHandler btnSave.Click, AddressOf btnSave_Click 

Private Sub btnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    Response.write("hey!") 
End Sub 

的問題是,我不認爲它的工作,因爲我從來沒有看到「嘿!」在我的頁面上。

我錯過了什麼嗎?

感謝

+1

使用Msgbox或response.redirect()測試它? 這樣你可以100%確定。 –

+1

你在哪裏添加事件處理程序? –

+0

我這樣做是在頁面加載 - 謝謝 – SkyeBoniwell

回答

2

我不知道失去了一些東西,但我想你能做到這一點,因爲一個簡單的方法你正在使用VB。給你的按鈕命令名稱和命令參數第一:

<asp:Button ID="Button1" runat="server" onclick="Button1_Click" 
CommandArgument="1" CommandName="yes" /> 

這些可以是任何東西 - 通常使用的命令名稱來確定用戶點擊該按鈕,命令參數顯示記錄ID。

在您的代碼隱藏,附加宏到ItemCommand FormView控件的事件(當一些內它發生的時候觸發):

Protected Sub FormView1_ItemCommand(sender As Object, e As System.Web.UI.WebControls.FormViewCommandEventArgs) Handles FormView1.ItemCommand 

    Select Case e.CommandName.ToLower 
     Case "yes" 

      'test 
      Label2.Text = "You chose " & e.CommandArgument.ToString 

    End Select 
End Sub Protected Sub FormView1_ItemCommand(sender As Object, e As System.Web.UI.WebControls.FormViewCommandEventArgs) Handles FormView1.ItemCommand 

    Select Case e.CommandName.ToLower 
     Case "yes" 

      'test 
      Label2.Text = "You chose " & e.CommandArgument.ToString 

    End Select 
End Sub 

而在VB中,這就是你需要做的!

+0

只有它允許我保存,+1和謝謝 – Pakk

1

您應該使用ItemCreated事件FormView的這樣的事情。如果ButtonItemTemplate你需要檢查的FormViewMode.ReadOnly,爲EditItemTemplate你需要使用Edit

Private Sub fvCourse_ItemCreated(ByVal sender As Object, ByVal e As System.EventArgs) Handles fvCourse.ItemCreated 
    Select Case fvCourse.CurrentMode 
     Case FormViewMode.Edit 
      Dim btnSave As Button = DirectCast(fvCourse.FindControl("btnSave"), Button) 
      AddHandler btnSave.Click, AddressOf btnSave_Click 
    End Select 
End Sub 
+0

該按鈕是在ItemTemplate中。爲什麼它應該在_ItemCreated事件中? - 謝謝 – SkyeBoniwell

+1

@ 999cm999:因爲必須在每次回發時添加事件處理程序,並且每次回發都會觸發此事件。它還確保只在正確的FormViewMode中調用它,並且不會得到'NullReferenceException'。 –

+0

我應該把所有的控件放在_ItemCreated中嗎?像所有我的asp:標籤,按鈕,文本框等? - 謝謝 – SkyeBoniwell