2009-03-26 4 views
0

중첩 된 ListView가 있고 LinQ에서 관련 테이블을 호출하는 경우 상위의 ItemDataBound 이벤트를 사용하지 않고 어떻게 정렬합니까? (솔루션으로 업데이트)LinQ에서 기본 정렬 순서를 정의 할 수 있습니까

의사 코드 :

<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> 

아마도 방법은 믿을 간단하지만, 나는 내부 제품이 필드를 기준으로 정렬하고 싶습니다. LinQ가이 쿼리를 즉석에서 작성하므로 실수로 작성하지 않고 정렬 작업을 수행하지 않아도 선언적으로 수행 할 수있는 방법이 없습니다.

의견이 있으십니까?

UPDATE는

는 다음에 예를 업데이트 :

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

은 다른 사람이 도움이되기를 바랍니다!

답변

5

제 가정은 Products가 IEnumerable<Product> (또는 IQueryable)입니다.

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

이 바보 같은 소리로 들리 겠지만 ...하지만 난 그 생각을하지 않았다 ... 이상 정확 : 이런 경우, 왜 그냥 그렇게처럼, 평가에있는 OrderBy 방법을 추가하지 너를 할 수 있다는 것을 몰랐다. 감사. 지금 테스트 중입니다. – Armstrongest

+0

두 번째로 눈에 띄지는 않습니다. 나는 Eval을 사용하여 String Expression을 평가할 수 있습니까? 이 오류가 발생합니다 : DataBinding : 'OrderBy (p => p'는 유효한 인덱싱 된 표현식이 아닙니다.) – Armstrongest

+0

같은 생각이지만, 다음과 같은 방법으로 수행했습니다. <% # ((Category) Container.DataItem). Products.OrderBy (p => p.Description) %> 일하는 것 같습니다! – Armstrongest

관련 문제