0

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

问题是,我认为它不起作用,因为我从来没有看到“嘿!” 在我的页面上。

我错过了什么吗?

谢谢

4

2 回答 2

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 中,这就是您需要做的所有事情!

于 2012-11-08T16:42:22.023 回答
1

您应该将ItemCreated事件FormView用于此类事情。如果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
于 2012-11-08T16:34:04.320 回答