我有一个包含以下内容的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采用相同的方法。
答案 0 :(得分:3)
两个中继器很容易:
<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() });