2011-08-11 5 views
1

J'ai une liste multicolonne paginée d'éléments avec ImageButton et LinkButton. Les commandes delete et select fonctionnent. Je ne peux pas déclencher l'événement SelectedIndexChanging, et SelectedIndex est toujours -1 dans le gestionnaire de commandes Select. Je pense que j'ai le bouton de sélection requis selon les docs. Mon but ultime est de sauvegarder l'index de l'article. Lorsque je reviens à la page, je peux restaurer la page actuelle du pager ListView afin que l'élément sélectionné soit visible. Mais je ne peux pas obtenir l'index de l'article. Ceci est pour les webforms asp.net 4.0.Index ListView sélectionné

<asp:ListView ID="ListView1" runat="server" OnItemDataBound="ListView1_ItemDataBound" 
    DataKeyNames="ItemID" DataSourceID="ObjectDataSource1" 
    OnItemCommand="ListView1_ItemCommand" GroupItemCount="2" 
    onselectedindexchanging="ListView1_SelectedIndexChanging"> 
    <LayoutTemplate> 
    <table width="100%"> 
     <tr> 
     <td> 
      <table class="sample" width="100%"> 
      <asp:PlaceHolder runat="server" ID="groupPlaceHolder"></asp:PlaceHolder> 
      </table> 
     </td> 
     </tr> 
    </table> 
    </LayoutTemplate> 
    <GroupTemplate> 
    <tr> 
     <asp:PlaceHolder runat="server" ID="itemPlaceHolder"></asp:PlaceHolder> 
    </tr> 
    </GroupTemplate> 
    <ItemTemplate> 
    <td> 
     <asp:ImageButton ID="btnDelete" ToolTip="Delete" runat="server" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ItemID")%>' CommandName="DeleteItem" Height="12" ImageUrl="resources/delete.gif" Width="12" /> 
     <asp:LinkButton ID="btnSelect" runat="server" CommandName="Select" CommandArgument='<%# DataBinder.Eval(Container.DataItem, "ItemID")%>'><%# DataBinder.Eval(Container.DataItem, "ItemName") %></asp:LinkButton> 
     <asp:Label ID="ccLabel" runat="server"></asp:Label>&nbsp;&nbsp;&nbsp; 
    </td> 
    </ItemTemplate> 
</asp:ListView> 
+0

Je pense que je vais essayer la propriété DataPager.StartRowIndex à la place, persister en quelque sorte pour le retour de l'utilisateur à la page. –

Répondre

1

Il serait utile si vous avez posté votre code (SelectedIndexChanging). Mais dans tous les cas, on a pensé:

SelectedIndexChanging ne donnera pas l'index sélectionné, car l'index n'a pas encore été sélectionné.

Utilisez plutôt SelectedIndexChanged. Cela se produit après que l'index a été sélectionné, donc peut vous donner une valeur.

+0

Il n'y a pas de code dans SelectedIndexChanging pour l'instant, juste un Debug.WriteLine du NewSelectedIndex, mais il ne se déclenche pas quand même. J'ai ajouté un gestionnaire SelectedIndexChanged et il ne se déclenche jamais non plus. –

+0

Au lieu d'assigner la fonction dans le balisage ('onselectedindexchanging =" ListView1_SelectedIndexChanging ">', avez-vous essayé de le faire dans le code-behind? Double-cliquez sur votre listview, puis dans le code-behind qui s'ouvre, faites Bien sûr que c'est sur 'onselectedinexchanged', et mettez votre code là-dedans.Cela n'expliquerait pas pourquoi votre méthode actuelle ne fonctionne pas, mais si cela fonctionne, au moins le problème est résolu. – Chains

Questions connexes