Как взять один набор данных / datatable и напечатать вложенный контент? - PullRequest
0 голосов
/ 22 апреля 2011

У меня есть DataTable со следующим содержимым:

Category    Vehicle_Num     
Minivan     1
Minivan     2
Minivan     3
Caravan     1
Caravan     6
5door       1
5door       3

etc...

Я хочу напечатать результаты на странице aspx в формате:

<h2>Minivan</h2>
<ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
</ul>

<h2>Caravan</h2>
<ul>
    <li>1</li>
    <li>6</li>
</ul>

<h2>5door</h2>
<ul>
    <li>1</li>
    <li>3</li>
</ul>

Я немного запуталсяо том, как это сделать в asp.net.В мире PHP мне легко конвертировать таблицу данных в ассоциативные массивы, а затем печатать в файлы шаблонов.Мне интересно, если это тот же подход, который я должен использовать с asp.net.

1 Ответ

3 голосов
/ 22 апреля 2011

Легко с двумя повторителями:

<asp:Repeater Id="Categories" runat="server">
<ItemTemplate>
  <h2><%#Eval("Category") %></h2>
    <ul>
    <asp:Repeater Id="myRep" runat="server" DataSource='<%# Eval("Numbers") %>'>
    <ItemTEmplate>
    <li><%# Eval("VehicleNum") %></li>
    </ItemTemplate>
    </asp:Repeater>
    </ul>
</ItemTemplate>
</asp:Repeater>

и в коде что-то вроде этого:

Categories.DataSource = dt.Rows.Cast<DataRow>
.Select(r => new { Category = r.Field<string>("Category"), VehicleNum = r.Field<string>("Vehicle_Num") })
.GroupBy(v => v.Category)
.Select(g => new { Category = g.Key, Numbers = g.ToList() });
...