我想知道.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>
答案 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存储在隐藏字段中,然后使用它来检索子类别。
这纯粹只是一个示例,也是使用嵌套控件的可能方法。