2012-01-03 4 views
0

테스트 중이며 ItemCommand 이벤트가 발생하지 않는 VB.Net 응용 프로그램을 상속했습니다. VB.Net 4.0 응용 프로그램입니다.ItemCommand 이벤트가 DataList에 대해 실행되지 않음

웹에서이 오류를 검색했으며 응용 프로그램에서 코드를 확인했습니다.

이 이벤트는 page_load 이벤트 이후의 포스트 백에서 발생합니다. 그러나 ImageButton을 클릭하여 (Postback을 강제 실행하고 잘하면 ItemCommand 이벤트를 실행), Page.IsPostBack 속성은 여전히 ​​FALSE로 설정되어 있으므로 ItemCommand 이벤트를 실행할 수 없게됩니다. 왜이 속성이 여전히 FALSE로 설정 될지 나는 모른다. 분명히, 나는 포스트 백이 발생하고 있다는 것을 페이지에 알리는 방법이 필요하다. runat = "server"태그가 있기 때문에 ImageButton이 처리해야합니다.

다음은 코드 스 니펫입니다. 누군가가 Item 명령을 실행하기 위해해야 ​​할 일을 알려주십시오. 위에서 말한 것은 사실입니다. 페이지가로드 된 후 왜 속성이 여전히 FALSE로 설정 될지 ImageButton을 누르는 이유는 모르겠습니다.

C#에서
lstProducts.ItemCommand += new DataListCommandEventHandler(lstProducts_ItemCommand); 

, 나는 영문는 것을 종종 발견했습니다

HTML

<asp:DataList ID="lstReferrals" runat="server" DataKeyField="ReferringAffiliateID" 
    OnItemCommand="lstReferrals_ItemCommand" CellPadding="4" Summary="Referral Design Table" 
    Width="800"><ItemTemplate> 
     <tr class="small" bgcolor="#FFFFFF"> 
      <td> 
       <asp:ImageButton ID="btnSelect" AlternateText="Select" ImageUrl='<%# NodeImage(1) %>' 
        CommandName="select" runat="server" />CODE BEHINDPrivate Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 



'Put user code to initialize the page here 
     If Not (Request.Params("ItemIndex") Is Nothing) Then 
      itemIndex = Int32.Parse(Request.Params("ItemIndex")) 
     Else 
      itemIndex = Convert.ToInt32(Null.SetNull(itemIndex)) 
     End If 


     If Not Page.IsPostBack Then 
      LoadReferrals() 

      If Not Null.IsNull(itemIndex) Then 
       lstReferrals.SelectedIndex = itemIndex 
       LoadReferrals() 
      End If 
     End If 


    End Sub 



Protected Sub lstReferrals_ItemCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataListCommandEventArgs) Handles lstReferrals.ItemCommand 

     Try 
      errormessage.Visible = False 
      ' Determine the command of the button (either "select" or "collapse") 
      Dim command As String = CType(e.CommandSource, ImageButton).CommandName 



      ' Update asp:datalist selection index depending upon the type of command 
      ' and then rebind the asp:datalist with content 
      Select Case command 
       Case "collapse" 
        lstReferrals.SelectedIndex = -1 
        LoadReferrals() 
       Case "select" 
        lstReferrals.SelectedIndex = e.Item.ItemIndex 
        LoadReferrals() 

답변

1

나는 불에 OnItemCommand 이벤트를 설정합니다를 Page_Load 메서드에서 이벤트 처리기를 추가하는 데 필요한 파일이 항상 이벤트 실행을 트리거하지는 않습니다. 예를 들어, OnItemCommand = "abc"를 가지고 있다면, 그것은 (어떤 이유로 든) 반드시 발사하지는 않습니다. 이 경우 asp.net이 위의 코드에서 이벤트 처리기를 강제로 추가해야합니다.