2012-04-11 12 views
1

Ok Ich habe viele Fragen zum Zugriff auf die Listenansicht in einer verschachtelten Listenansicht gesehen, aber keine hat meine Frage beantwortet.Verschachtelte Listenansicht

Warum konnte ich nicht auf einige Eigenschaften der ersten Listenansicht zugreifen und sie an die zweite senden? Ich habe viele verschiedene Eigenschaften ausprobiert, aber keine funktioniert. Was ist mit dem ItemPlaceHolder oder nur User_Category? Mein Gedanke ist, dies mit zwei ObjectDataSoureces zu tun und den DataKeyName von der Elternlistenansicht an die zweite ObjectDataSource zu senden. Aber ich weiß nicht, wie die DataKeyName zu erhalten (siehe unten ????)

<asp:ListView ID="ListView1" runat="server" 
    DataSourceID="srcGetOrderForm" 
    DataKeyNames=User_Category 
    ItemPlaceholderID="lvItemPlaceHolder"> 

    <LayoutTemplate> 
     <asp:PlaceHolder runat="server" ID="lvItemPlaceHolder" /> 
    </LayoutTemplate> 

    <ItemTemplate> 
     <asp:Panel runat="server" ID="panelCustomerInfo" 
       cssclass="collapsePanelHeaderForFilter"> 
       <%# Eval("User_Category")%> 
     </asp:Panel>  
     <asp:panel runat="server" ID="panelCustomerDetails" 
       cssclass="collapsePanelForFilter"> 

     <asp:ListView ID="ListView2" runat="server" 
      DataSourceID="srcGetOrderForm2" 
      ItemPlaceholderID="lvOrdersItemPlaceHolder"> 

      <LayoutTemplate> 
      <ul> 
       <asp:PlaceHolder runat="server" 
        ID="lvOrdersItemPlaceHolder" /> 
      </ul> 
      </LayoutTemplate> 

      <ItemTemplate> 
      <li> 
       Description: <%# Eval("Description")%> 
      </li> 
      </ItemTemplate> 
      </asp:ListView> 

     </asp:panel> 
</ItemTemplate> 
</asp:ListView> 

    <asp:ObjectDataSource 
     ID="srcGetOrderForm" 
     TypeName = "ABC.Products" 
     SelectMethod = "NewGetOrderFormCategories" 
     runat="server" > 
     <SelectParameters> 
      <asp:ProfileParameter Name="User" PropertyName="User_ID" /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 

    <asp:ObjectDataSource 
     ID="srcGetOrderForm2" 
     TypeName = "ABC.Products" 
     SelectMethod = "NewGetOrderFormCategoryItems" 
     runat="server" > 
     <SelectParameters> 
      <asp:ProfileParameter Name="User" PropertyName="User_ID" /> 
      <asp:ControlParameter ControlID="ListView1" Name="User_Category" PropertyName=???? /> 
     </SelectParameters> 
    </asp:ObjectDataSource> 
+0

Irgendwelche echte Notwendigkeit überhaupt zu nisten? Was ist mit ListView-Vorlagen, Master-Details usw.? – IrishChieftain

+1

Wenn alles gesagt und getan ist, brauche ich drei separate Gruppierungen. Alle Beispiele, die ich gesehen habe, verwenden eine verschachtelte Listenansicht. Aber ich werde mich darum kümmern. –

Antwort

0

Es kann getan werden, aber es hängt alles davon ab, was Sie unter „nebenbei“, was Sie wollen passieren und wenn Sie den Wert übergeben möchten.

Wenn Sie Informationen aus der Hauptlistenansicht an die untergeordnete Listenansicht übergeben möchten, können Sie das Ereignis ItemCreated der Hauptlistenansicht außer Kraft setzen. In diesem Fall können Sie auf Container.DataItem zugreifen, wodurch das aktuelle Objekt bereitgestellt wird, an das die Zeile der übergeordneten Listenansicht gebunden ist. Sie können dann die Funktion FindControl verwenden, um die innere Listenansicht zu finden und nach Belieben mit ihr zu interagieren. Sie können das ObjectDataSource jedoch möglicherweise nicht verwenden. Möglicherweise müssen Sie die Datenquelle der zweiten Listview direkt binden.

+0

Ist das auch mein Problem? http://stackoverflow.com/questions/15077897/grab-item-id-from-parent-listview – jackncoke