2009-03-26 11 views
0

Wenn ich eine geschachtelte ListView habe, und ich eine verwandte Tabelle in LinQ aufrufen, wie sortiere ich es, ohne auf das ItemDataBound-Ereignis des übergeordneten zugreifen?Kann ich Standard Sortierreihenfolge in LinQ definieren

Pseudo-Code (mit Lösung AKTUALISIERT):

<asp:ListView ID="lv" runat="server" OnItemDataBound="lv_ItemDataBound" > 
    <LayoutTemplate> 
     <!-- Product Category Stuff --> 
     <asp:PlaceHolder Id="itemPlaceholder" runat="server"></asp:PlaceHolder> 
    </LayoutTemplate> 

    <ItemTemplate> 
     <asp:ListView ID="lvInner" runat="server" DataSource='<%# <%# ((Category)Container.DataItem).Products.OrderBy(p => p.Description) %> %>'> 
     <LayoutTemplate> 
      <ul> 
       <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder> 
      </ul> 
     </LayoutTemplate> 
     <ItemTemplate> 
      <li>Item Stuff</li> 
     </ItemTemplate> 
     </asp:ListView> 
    </ItemTemplate> 
</asp:ListView> 

Vielleicht ist die Methode ist trügerisch einfach, aber ich will die inneren Produkte von einem Feld sortiert werden. Ich kann keine Möglichkeit sehen, dies deklarativ zu tun, da LinQ diese Abfrage im laufenden Betrieb erstellt, wenn ich mich nicht irre, und nicht sortiere.

Irgendwelche Gedanken?

<%# ((Category)Container.DataItem).Products.OrderBy(p => p.Description) %> 

Hoffe, dass es jemand anderes hilft:

UPDATE

das Beispiel auf die folgende aktualisiert!

Antwort

5

Meine Annahme ist, dass Produkte ein IEnumerable<Product> (oder IQueryable) ist. Wenn das der Fall ist, wurde noch nicht nur die OrderBy-Methode zur Bewertung, etwa so:

<%# Eval("Products.OrderBy(p => p.FieldToSortOn)") %> 
+0

Dieser blöde klingen mag ... aber ich habe nicht einmal daran denken ... oder genauer zu sein ... Ich wusste nicht, dass du das tun kannst. Vielen Dank. Jetzt testen. – Armstrongest

+0

Auf den zweiten Blick scheint dies nicht möglich. Kann ich Eval wirklich zum Auswerten eines String-Ausdrucks verwenden? Ich bekomme diesen Fehler: DataBinding: 'OrderBy (p => p' ist kein gültiger indizierter Ausdruck. – Armstrongest

+0

GOT IT! Die gleiche Idee, aber ich habe es folgendermaßen gemacht: <% # ((Category) Container.DataItem). Products.OrderBy (p => p.Description)%> scheint zu arbeiten! – Armstrongest

Verwandte Themen