2010-03-05 3 views
1

VB.NET에서 코드 숨김이 포함 된 ASP.NET 페이지가 있습니다. ASPX 페이지에서 중계기 내부에 asp : ImageButton이있는 Repeater가 있고 버튼 클릭을 포착하고 싶습니다. 지금까지 내가의 FindControl을 사용하고 원래 컨트롤의 사본을 처리해야 읽을 때 :VB.NET AddHandler throwing 개체 참조가 설정되지 않았습니다.

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에 줄에

가 사전에 감사합니다 (I은 VB.NET으로 조금 새로운 해요)

답변

1

리피터의 ItemCommand 이벤트를 처리해야합니다. 이 경우 CommandSource는 이미지 버튼입니다. CommandArgument 또는 CommandName에서 실제로 수행 할 명령을 나타내야합니다. CommandArgument를 3으로 설정하면 각 이미지 버튼이 동일한 값을 갖게됩니다.

각 단추의 ID가 변경되기 때문에 repeater.FindControl ("btnImage1")이 작동하지 않습니다.

핸들러를 추가하는 것이 올바르지 않습니다.

Repeater.ItemCommand 이벤트; Repeater 컨트롤에서 아무 버튼이나 클릭하면 발생합니다. http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.itemcommand.aspx

1

당신이 얻고있는"개체 참조가 설정되지 ...에서 imagebutton1이 널 (null)이기 때.에 오브젝트의 태세 ". 핸들러를 추가하기 전에 실제로 컨트롤을 찾고 있는지 확인하십시오.

AMissico가 맞으므로 실제로 Repeater의 ItemCommand 이벤트를 구독하고 CommandArgument을 사용하여 사용자가 클릭 한 행을 식별하십시오.

+0

당신 말이 맞아 ... 나는 그것을 업데이트하고 당신을 신용했다. 나는 뇌의 경과가 있었고 질문의 맥락을 고려조차하지 않았다. –

+0

일어납니다. : O) 나는 나의 마지막 웹 프로젝트가 끝나고 중계기를 잘 탔다. 여러 중계기를 중첩시키고 그룹화해야했습니다. – AMissico

+0

리피터에서 수 백만 번 버튼을 사용했기 때문에 재미 있습니다. 그러나, 나는 AddHandler에 너무 집중하여 나는 그가 실제로하고있는 일에 대해서 생각조차하지 않았다. –

관련 문제