2011-04-21 58 views
0

我有以下内容的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

您使用的web表单或MVC? – 2011-04-21 21:38:26

回答

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() }); 
+0

谢谢,您知道您在Select()函数中使用的符号,其中r => new {}。我从来没有见过这种符号,你能告诉我该怎么读吗? – John 2011-04-21 22:32:58

+0

该行应该是'Categories.DataSource = dt.Rows.Cast ()' – PunkyGuy 2011-04-21 23:03:47

+0

@PunkyGuy固定。谢谢 – onof 2011-04-22 06:19:40