Asp.net 未设置VB.NET AddHandler引发对象引用
我有一个ASP.NET页面,在VB.NET中有代码隐藏。在ASPX页面上,我有一个转发器,转发器内有一个asp:ImageButton,我想捕捉按钮上的点击。据我所知,我必须使用FindControl,然后处理原始控件的副本:Asp.net 未设置VB.NET AddHandler引发对象引用,asp.net,vb.net,webforms,repeater,Asp.net,Vb.net,Webforms,Repeater,我有一个ASP.NET页面,在VB.NET中有代码隐藏。在ASPX页面上,我有一个转发器,转发器内有一个asp:ImageButton,我想捕捉按钮上的点击。据我所知,我必须使用FindControl,然后处理原始控件的副本: Codebehind: Dim imagebutton1 As ImageButton = repeater.FindControl("btnImage1") AddHandler imagebutton1.Command, AddressOf ReportTra
Codebehind:
Dim imagebutton1 As ImageButton = repeater.FindControl("btnImage1")
AddHandler imagebutton1.Command, AddressOf ReportTransfer
...
...
Protected Sub ReportTransfer(ByVal sender As ImageButton, ByVal args As CommandEventArgs)
...
End Sub
ASPX页面:
<td>
<asp:ImageButton runat="server" ID="btnImage1" ImageUrl="~/images/icons/icon_small.png"
CommandArgument="3" />
</td>
</tr>
</ItemTemplate>
它在AddHandler行抛出“对象引用未设置为对象的实例”,我不知道它为什么这样做(我对VB.NET有点陌生)
提前感谢您您得到的是“对象引用未设置为对象实例”,因为imagebutton1为空。在添加处理程序之前,确保确实找到了控件
AMissico是对的,您希望实际订阅中继器的
ItemCommand
事件,并使用CommandArgument
标识用户单击的行。您应该处理中继器的ItemCommand事件。在此事件中,CommandSource是图像按钮。CommandArgument或CommandName需要指示实际要执行的命令。将CommandArgument设置为3,意味着每个图像按钮将具有相同的值
repeater.FindControl(“btnImage1”)无法工作,因为每个按钮的id都将发生更改
添加处理程序不正确
Repeater.ItemCommand事件;在中继器控件中单击任何按钮时发生 你说得对……我更新了它,并把它归功于你。我脑子里一片空白,甚至没有考虑到问题的背景。O) 在我上一个网络项目之后,我变得非常擅长重复。我不得不对多个中继器进行嵌套和分组。这很有趣,因为我已经在中继器中使用了一百万次按钮。然而,我太专注于AddHandler了,我甚至没有想到他到底在做什么。