创建两组列表,每个列表都有一个标题,然后是一个项目列表

时间:2013-11-07 22:47:53

标签: asp.net

我想知道.net中的两个4列html链接列表的最佳方法是什么?

列表将基于表格中的数据 - 选择一个类别,然后选择该类别中的每个子类别。已经有了这个html标记。

我只需在构建字符串的代码中就可以做到这一点。但我想知道是否有更好的方法来处理它。其中一个数据控件是否适用于此?我更喜欢在可能的情况下使用控件,而不是仅仅构建一个原始的html字符串。另外,我只是想知道处理这样的事情的最佳方法。

如果重要,基础数据看起来像这样: 类别表和产品表。使用产品表,我只选择其中包含项目的类别。还有另一个表,类别关系,它定义了父和子关系,即类别和子类别。 Product table有一个catgory和subcategory列,链接到类别表。

html基本上是这样的:

<div class="out-wrapper">
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
</div>

<div class="out-wrapper">
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<h3> categoryName /<h3>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
<a href=""> subcat name</a>
</div>

1 个答案:

答案 0 :(得分:1)

如果您更喜欢使用控件,可以在Repeater内嵌套Listview,例如:

<强> HTML

<asp:ListView ID="ListView1" runat="server" DataSourceID="LinqDataSource"
            ondatabound="ListView1_DataBound">
     <ItemTemplate>
         <h3><%# Eval("categoryName") %></h3>
         <asp:HiddenField ID="HdnId" runat="server" Value='<%# Eval("categoryID") %>' />
     </ItemTemplate>
     <asp:Repeater ID="NestedRepeater" runat="server">
        <ItemTemplate>
        <a href=''><%# Eval("subcat") %></a>
        </ItemTemplate>
     </asp:Repeater>
</asp:ListView>

<强>代码隐藏

protected void ListView1_DataBound(object sender, EventArgs e)
{
    GetCategories();
}

private void GetCategories()
{
    DataContext db = new DataContext();

    using (db)
    {

        foreach (ListViewItem item in ListView1.Items)
        {
            Repeater rpt = (Repeater)item.FindControl("NestedRepeater");
            HiddenField hdn = (HiddenField)item.FindControl("HdnId");

            var nest = from i in db.categories
                       where i.catid == Convert.ToInt32(hdn.Value)
                       select new
                       {
                           i.subcat_name
                       };

            rpt.DataSource = nest;
            rpt.DataBind();
        }
    }
}

我们的想法是将ID存储在隐藏字段中,然后使用它来检索子类别。

这纯粹只是一个示例,也是使用嵌套控件的可能方法。