通过分组在ASP.NET中呈现类似的数据

时间:2010-04-14 06:42:41

标签: c# html asp.net dynamic grouping

我正在尝试从db中创建一些动态html。我从db返回的数据是:

ApplicationName       URL
------------------------------
AppName1              URL1
AppName2              URL1
AppName2              URL2
AppName1              URL2

我希望单个应用程序的所有URL都应该在ApplicationName的一个标题下呈现。像:

AppName1

      URL1

      URL2

AppName2

      URL1

      URL2

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

你的代码可能有这样的东西,所以你可以访问aspx标记中的项目:

public Item[] DataItems { get; set; }

protected void Page_Load(object sender, EventArgs e)
{
    // get your list
    DataItems = new[]
                    {
                        new Item{ ApplicationName = "Test", Url = new Uri("http://test.com/Home")},
                        new Item{ ApplicationName = "Test", Url = new Uri("http://test.com")},
                        new Item{ ApplicationName = "Test 2", Url = new Uri("http://test2.com/Home")},
                        new Item{ ApplicationName = "Test 2", Url = new Uri("http://test2.com/")},
                    };
}

然后在你的aspx文件中,只需将一些linq放入混合中以执行分组操作:

 <ul>
<% foreach (var aggregateItem in (from item in DataItems
                                  group item by item.ApplicationName
                                  into groupedItem
                                  select new { Name = groupedItem.Key, Items = groupedItem })) %>
<% { %>

    <li><strong><%= aggregateItem.Name%></strong>
        <ul>
            <% foreach (var subItem in aggregateItem.Items) %>
            <% { %>
                <p>
                    <a href="<%= subItem.Url %>"><%= subItem.Url %></a>
                </p>
            <% } %>
        </ul>
    </li>
<% } %>
</ul>