ListView:显示数据分组?

时间:2010-05-03 19:55:22

标签: c# asp.net

我想显示DataTable的内容,根据其中一列的值分为几组。所以,如果我有一个DataTable(来自SQL查询):

GroupID   Name   Description
1         foo    bar
1         one    two
2         some   thing

我想将包含GroupID 1的所有记录放在一个div中,将所有包含GroupID 2的记录放在另一个div中,依此类推。我怎么能这样做?

我正在使用C#代码隐藏在ASP.NET 4.0中编写。

2 个答案:

答案 0 :(得分:0)

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
}

答案 1 :(得分:0)

您可以在数据绑定之前使用LINQ to DataSet对数据进行分组。

的内容
var query = from row in myDataTable.AsEnumerable()
            group row by row["GroupID"] // appropriate column access code here
            select row;

然后你需要嵌套的ListViews(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>