2016-08-12 4 views
0

Ich habe eine Schaltfläche in einem ListView, die mit einem Klick öffnet ein Modal mit Informationen für die Schaltfläche, die angeklickt wurde. Ich konnte den Index des aktuellen Listenansicht-Elements abrufen, aber ich muss den Text von einem Label im vorherigen und im nächsten Element abrufen. Heres, was ich habe:Wie bekomme ich das nächste und vorherige Element in einem ListView und finde einen Namen?

protected void List_ItemCommand(object sender, ListViewCommandEventArgs e) 
    { 
     ListViewDataItem dataItem = (ListViewDataItem)e.Item; 
     //Gets index of Listview 
     int DispalyIndex = e.Item.DisplayIndex; 
     int ItemIndex = e.Item.DataItemIndex; 
     Button index = (Button)dataItem.FindControl("TitleButton"); 
     Label Name = (Label)dataItem.FindControl("LabelName"); 



    } 

Ich habe versucht, den Index aber kein Glück Dekrementieren jemand eine Idee oder eine bessere Lösung? Vielen Dank.

UPDATE

Heres meine Ansichten verwendet, benutze ich den ersten Listenansicht den Titel und dann die zweite zu bekommen Jobs unter dem Titel zu ziehen. Ich binde beide mit einer Abfragedaten binden mit

<asp:ListView ID="List" runat="server" OnItemCommand="List_ItemCommand" OnItemDataBound="List_ItemDataBound"> 
    <LayoutTemplate> 
<table> 
    <tr> 
     <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
    </tr> 
    </table> 
</LayoutTemplate> 
      <ItemTemplate> 

<span class="label label-primary"><%# Eval("LabelName")%></span> <br />

   <asp:ListView ID="JobList" runat="server" ItemPlaceholderID="JobPlaceHolder" OnItemDataBound="JobList_ItemDataBound"> 
       <LayoutTemplate> 

          <asp:PlaceHolder runat="server" ID="JobPlaceHolder" /> 

       </LayoutTemplate> 
       <ItemTemplate> 

        <br /> 


         <asp:Button runat="server" ID="TitleButton" Text='<%# Eval("Job Title") %>' Font-Size="XX-Small" Font-Bold="true" CssClass="btn-xs btn-default" ClientIDMode="Static" OnClick="TitleButton_Click" /> 

           </ItemTemplate> 
        <EmptyDataTemplate> 
         <br /> 
         <b> <asp:Label runat="server" Text="There is no job for this Family and Level!" /></b> 

        </EmptyDataTemplate> 

+1

Mögliche Duplikat [in Listview nächster Punkt Select] (http: // stackov erflow.com/questions/15549921/select-next-item-in-listview) – MethodMan

+0

nein. nicht ein Duplikat davon sowieso – naveen

Antwort

0

Versuchen Sie, diese

//null check before performing an operation, dataItem might be the first element in the page 
//If so, prevItem will be null 
var prevItem = List.Items[itemIndex - 1].FindControl("LabelName") as Label; 
//null check before performing an operation, dataItem might be the last element in the page 
//If so, nextItem will be null 
var lastItem = List.Items[itemIndex + 1].FindControl("LabelName") as Label; 
+0

Jedes Element wird null, auch wenn ich etwas in der Mitte der Liste – user2993767

+0

wählen Sie bitte Ihre Markup. Listview ist ein bisschen schwierig – naveen

Verwandte Themen