我需要從我的數據訪問層檢索一組Widgets,按widget.Manufacturer分組,以顯示在一組嵌套ASP.NET ListViews中。使用嵌套ListViews顯示IGrouping <>
問題是,(據我所知)嵌套的ListView方法需要我在使用它之前對數據進行整形,而我無法找出最佳方法。我已經能夠拿出迄今最好是把一個LINQ查詢我的數據訪問層,像這樣:
var result = from widget in GetAllWidgets(int widgetTypeID)
group widget by widget.Manufacturer into groupedWidgets
let widgets = from widgetGroup in groupedWidgets
select widgetGroup
select new { Manufacturer = groupedWidgets.Key, Widgets = widgets };
當然,匿名類型不能被傳來傳去,所以那並不是」工作。定義一個自定義類來包含數據似乎是錯誤的方法。有什麼辦法可以在ASP.NET的一方執行分組嗎?我使用ObjectDataSources來訪問DAL。
更新:OK,我不會再創建一個匿名類型,而不是我的DAL傳遞一個IEnumerable<IGrouping<Manufacturer, Widget>>
到ASP.NET頁面,但我怎麼能在我的列表視圖使用?我需要(幾乎或類似的東西)呈現以下HTML
<ul>
<li>Foo Corp.
<ol>
<li>Baz</li>
<li>Quux</li>
</ol>
</li>
<li>Bar Corp.
<ol>
<li>Thinger</li>
<li>Whatsit</li>
</ol>
</li>
</ul>
本來,我有過這樣一個ListView內的ListView:
<asp:ListView ID="ManufacturerListView">
<LayoutTemplate>
<ul>
<asp:Placeholder ID="itemPlaceholder" runat="server" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<li><asp:Label Text='<%# Eval("Manufacturer.Name") %>' />
<li>
<asp:ListView ID="WidgetsListView" runat="server" DataSource='<%# Eval("Widgets") %>'>
<LayoutTemplate>
<ol>
<asp:PlaceHolder runat="server" ID="itemPlaceholder" />
</ol>
</LayoutTemplate>
<ItemTemplate>
<li><asp:Label Text='<%# Eval("Name") %>'></li>
</ItemTemplate>
</asp:ListView>
</li>
</ItemTemplate>
</asp:ListView>
注WidgetsListView的DataSource
財產是怎麼本身數據綁定。如何在不重新調整數據的情況下複製此功能?
這是越來越複雜,對不起,如果我應該只是提出一個單獨的問題,而不是。
感謝您的意見。我用更多的信息更新了我的原始問題。 – 2008-10-06 23:17:41