Я успешно отображается список категорий и их соответствующих подкатегорий с помощью вложенных элементов управления Repeater:Показать полный список категорий и подкатегорий с помощью Repeater
.aspx
<asp:Repeater ID="rMainCategories" runat="server" OnItemDataBound="rMainCategories_ItemDataBound">
<ItemTemplate>
<li>
<asp:Label ID="lblCategoryName" runat="server"
Text='<%# Eval("MainCategory") %>' />
</li>
<ul>
<asp:Repeater ID="rSubCategories" runat="server">
<ItemTemplate>
<li>
<asp:HyperLink ID="hlProductName" runat="server" Text='<%# Eval("SubCategory")%>' />
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</ItemTemplate>
</asp:Repeater>
.aspx.cs
void GetCategories()
{
con.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT m.MainCatID, m.Category AS MainCategory " +
"FROM MainCategories m WHERE m.MainCatID " +
"IN (SELECT MainCatID FROM SubCategories) " +
"SELECT s.SubCatID, s.Category AS SubCategory, s.MainCatID FROM SubCategories s";
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
ds.Relations.Add(new DataRelation("CategoriesRelation", ds.Tables[0].Columns["MainCatID"],
ds.Tables[1].Columns["MainCatID"]));
rMainCategories.DataSource = ds.Tables[0];
rMainCategories.DataBind();
con.Close();
}
protected void rMainCategories_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView drv = e.Item.DataItem as DataRowView;
Repeater rSubCategories = e.Item.FindControl("rSubCategories") as Repeater;
rSubCategories.DataSource = drv.CreateChildView("CategoriesRelation");
rSubCategories.DataBind();
}
}
Выход
Список основных категорий
Есть ли способ я могу отобразить категории без подкатегории? Просьба сообщить. Спасибо.
Вы хотите показать категории, у которых нет подкатегорий ??? –
@Ganesh_Devlekar Да. Полный список категорий. – abramlimpin