javascript
  • asp.net
  • listview
  • onclick
  • 2010-09-19 16 views 0 likes 
    0

    J'essaie d'implémenter un événement onclick pour sélectionner un élément dans un ASP: ListViewControl.javascript onclick pour sélectionner un élément avec le contrôle ListView asp.net

    <ItemTemplate> 
         <tr runat="server" id="MemberRow" onclick='<%#ClientScript.GetPostBackClientHyperlink(LvMembers, string.Format("Select${0}", Container.DataItemIndex)) %>'> 
          <td> 
           <asp:Literal runat="server" ID="LtlMembershipNumber" Text='<%#Eval("MembershipNo") %>' /> 
          </td> 
          <td> 
           <asp:Literal runat="server" ID="LtlName" Text='<%#Eval("FullName") %>' /> 
          </td> 
          <td> 
           <asp:Literal runat="server" ID="LtlCompany" Text='<%#Eval("Company") %>' /> 
          </td> 
          <td> 
           <asp:Literal runat="server" ID="LtlNotes" Text='<%#Eval("Notes") %>' /> 
          </td> 
          <td runat="server"> 
           <asp:Literal runat="server" ID="LtlMobile" Text='<%#Eval("MobilePhone") %>' /><asp:LinkButton 
            runat="server" ID="lnl1" CommandName="Select" Text="test" /> 
          </td> 
         </tr> 
        </ItemTemplate> 
    

    La page se charge et se lie comme prévu. Il sort également le HTML que je m'attendrais.

    <tr id="ContentPlaceHolder1_LvMembers_MemberRow_1" onclick="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LvMembers','Select$1')"> 
         <td> 
           10000018 
          </td> 
         <td> 
           Axel Rose 
          </td> 
         <td> 
    
          </td> 
         <td> 
    
          </td> 
         <td> 
           <a id="ContentPlaceHolder1_LvMembers_lnl1_1" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$LvMembers$ctrl1$lnl1','')">test</a> 
          </td> 
        </tr> 
    

    Cependant, le onclick ne se déclenche pas l'événement ListView.Command ou ListView.SelectedIndexChanging? Si j'ajoute un bouton avec CommandName = "Select" cela fonctionne comme prévu? Les données POST sont les mêmes!

    {__EVENTTARGET = ctl00% 24ContentPlaceHolder1% 24LvMembers & __EVENTARGUMENT = Sélectionner% 245 & __VIEWSTATE = ...}

    Répondre

    0

    Type de réponse moi-même. La classe ListView n'implémente pas l'interface IPostBackEventHandler. Cela signifie qu'il n'a pas la méthode RaisePostBackEvents et n'accepte pas EventTarget. Je l'ai surchargé pour implémenter cette interface.

    public class ListViewEvent : ListView, IPostBackEventHandler 
        { 
         public void RaisePostBackEvent(string eventArgument) 
         { 
          if (!eventArgument.Contains("$")) 
           return; 
    
          string[] splitEventArgument = eventArgument.Split('$'); 
    
          switch (splitEventArgument[0]) 
          { 
           case "Select": 
            { 
             SelectItem(Convert.ToInt32(splitEventArgument[1])); 
             break; 
            } 
           default: 
            { 
             break; 
    
            } 
          } 
         } 
        } 
    
    +0

    Exactement ce que je cherchais. Comment puis-je l'implémenter? – Taosique

     Questions connexes

    • Aucun problème connexe^_^