我想显示一个DataTable的内容,根据其中一列的值分成几个组。所以,如果我有一个数据表(从SQL查询)有:ListView:显示数据分组?
GroupID Name Description
1 foo bar
1 one two
2 some thing
我想将装有1组ID的所有记录在一个DIV,有2组ID的所有记录在另一个div等。我怎样才能做到这一点?
我在ASP.NET 4.0中编写,使用C#代码隐藏。
我想显示一个DataTable的内容,根据其中一列的值分成几个组。所以,如果我有一个数据表(从SQL查询)有:ListView:显示数据分组?
GroupID Name Description
1 foo bar
1 one two
2 some thing
我想将装有1组ID的所有记录在一个DIV,有2组ID的所有记录在另一个div等。我怎样才能做到这一点?
我在ASP.NET 4.0中编写,使用C#代码隐藏。
您可以使用LINQ to DataSet在数据绑定之前对您的数据进行分组。沿
var query = from row in myDataTable.AsEnumerable()
group row by row["GroupID"] // appropriate column access code here
select row;
线的东西。然后你需要嵌套列表视图(code blatantly copied from here)实际呈现它。东西沿线
<asp:ListView runat="server" ID="outer" ItemPlaceholderID="PlaceHolder2">
<LayoutTemplate>
<asp:PlaceHolder runat="server" ID="PlaceHolder2" />
</LayoutTemplate>
<ItemTemplate>
<h1>[Some heading if you'd like one]</h1>
<asp:ListView runat="server" ID="inner"
ItemPlaceholderID="PlaceHolder3"
DataSource="<%# Container.DataItem %>">
<LayoutTemplate>
<ul>
<asp:PlaceHolder runat="server" ID="PlaceHolder3" />
</ul>
</LayoutTemplate>
<ItemTemplate>
<!-- data goes here -->
</ItemTemplate>
</asp:ListView>
</ItemTemplate>
</asp:ListView>
foreach(DataRow r in myDataTable.Filter("GroupID = 1"))
{
//write out contents of div1
}
foreach(DataRow r in myDataTable.Filter("GroupID = 2"))
{
//write out contents of div2
}
这听起来像我想要的东西,但我不能为我的生活解密“var query =”代码。你能解释一下吗? – jbreed 2010-05-03 22:54:02
@jawonlee:'var query = ...'是Linq http://msdn.microsoft.com/en-us/netframework/aa904594.aspx。这里还有一些示例(http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx)。基本上Linq是一种内置于C#3中的查询语法。除了可以在评论中解释的内容之外,还有一些其他内容,但是本网站和MSDN上有很多关于它是什么以及如何使用它的很好的信息。 – R0MANARMY 2010-05-03 23:37:36