2012-11-08 239 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