我的页面上的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
问题是,我认为它没有用,因为我从未见过“嘿!”在我的页面上。
我错过了什么吗?
由于
答案 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.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