2010-03-05 52 views
1

我有一個ASP.NET頁面,其代碼隱藏在VB.NET中。在ASPX頁面上,我有一箇中繼器內有一個帶有asp:ImageButton的Repeater,我想要捕捉按鈕上的點擊。至於我讀到我必須使用的FindControl,然後處理原始控制的副本:VB.NET AddHandler引發未設置對象引用

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)

預先感謝您

回答

1

您應該處理Repeater的ItemCommand事件。在這種情況下,CommandSource是圖像按鈕。 CommandArgument或CommandName需要指示您實際要執行的命令。將CommandArgument設置爲3,表示每個圖像按鈕將具有相同的值。

repeater.FindControl(「btnImage1」)不會工作,因爲每個按鈕的ID將會改變。

添加處理程序不正確。

Repeater.ItemCommand Event;在Repeater控件中單擊任何按鈕時發生; http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcommand.aspx

1

你得到」對象引用不設置到在對象的立場「,因爲imagebutton1爲空。在添加處理程序之前,確保你實際上找到了一個控件。

AMissico是對的,您想要實際訂閱Repeater的ItemCommand事件,並使用CommandArgument來標識用戶點擊了哪一行。

+0

你是對的...我更新了它並記入了你。我有一個大腦失誤,甚至沒有考慮問題的背景。 – 2010-03-05 01:27:36

+0

發生。 :O)在我的最後一個Web項目之後,我在中繼器方面表現非常出色。我必須嵌套和分組多箇中繼器。 – AMissico 2010-03-05 01:32:16

+0

這很有趣,因爲我已經在中繼器中使用了一百萬次按鈕。但是,我非常關注AddHandler,我甚至都沒有想過他實際上在做什麼。 – 2010-03-05 03:13:03

相關問題