按钮添加事件单击事件

时间:2012-11-08 16:27:50

标签: asp.net vb.net

我的页面上的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

问题是,我认为它没有用,因为我从未见过“嘿!”在我的页面上。

我错过了什么吗?

由于

2 个答案:

答案 0 :(得分:2)

我不知道遗漏了什么,但我认为你可以用更简单的方式做到这一点,因为你正在使用VB。首先给你的按钮命令名和命令参数:

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

这些可以是任何东西 - 通常使用命令名来确定用户单击的按钮,以及显示记录ID的命令参数。

在您的代码隐藏中,将一个宏附加到FormView的 ItemCommand 事件(当事件发生时触发):

 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中,这就是你需要做的一切!

答案 1 :(得分:1)

您应该使用FormView的{​​{3}}事件来处理此类问题。如果Button位于ItemTemplate,您需要检查FormViewMode.ReadOnlyEditItemTemplate需要使用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