2012-03-29 25 views
0

我只使用asp.net大約一個月,所以我希望我的白話有道理。我更願意使用MVC,但是這個特定的視圖頁面似乎必須使用aspx和代碼隱藏文件,因爲它需要「包含」在平面文件CMS中。asp.net排序一個內部的ListView

我有3個嵌套ListViews。首先是從我的代碼隱藏文件使用LINQ填充(數據綁定),並且效果很好,獲取的列表。然後,對於第二個ListView,我調用GetRecordsFromYear函數,該函數獲取所有記錄,再次在代碼隱藏中使用LINQ。

<asp:ListView ID="lv2" runat="server" DataSource='<%# GetRecordsFromYear(Convert.ToInt32(Container.DataItem)) %>'> 

接下來,對於每個記錄有導航屬性(一到許多與另一個表的關係)與Degrees表有一個名爲「gradyear」的列,這是我想要排序的最後一個ListView。我可以輸出這種精細通過執行類似:

<asp:ListView ID="lv3" runat="server" DataSource='<%# Eval("Degrees") %>'> 

一切完美,除了我無法弄清楚如何解決這最後的ListView。我無法使用LINQ,因爲我從未真正檢索過這些數據,它是第一個表的導航屬性記錄。我想我可能可能只是使用另一個函數來檢索數據,但當我有導航屬性可用時,必須始終查詢數據庫似乎很愚蠢。我不想要一個按鈕來對它進行排序,只是按默認排序。

回答

0

你試過:

<asp:ListView ID="lv3" runat="server" DataSource='<%# From o in Eval("Degrees") order by o.gradyear %>'> 

選項2: 如果的eval( 「度」)是一個IEnumerable,你可以這樣做

<asp:ListView runat="server" ID="lstInner" DataSource='<%# GetDegrees(Eval("Degrees")) %>'> 

動側:

Public Function GetDegrees(degrees As IEnumerable) As IEnumerable 
    Return From o In degrees Order By o.gradyear 
End Function 
+0

您輸入的內容無效(表示「)」)。更改大寫From to from給出錯誤「查詢主體必須以select子句或group子句結束」,所以我嘗試在它後面添加「select o」,但這也不起作用。然後,我通過orderby(我認爲是正確的)刪除了orderby之間的空間,並且出現此錯誤:「無法找到源類型爲'object'的查詢模式的實現。'OrderBy'未找到。」 我發現這個:http://stackoverflow.com/questions/687134/can-i-define-default-sort-order-in-linq但它似乎並沒有使用Eval() – 2012-03-29 15:03:28