non è una cosa molto complicata e dovresti cercare di far tuo questo meccanismo.
Questa è una base da cui partire. Per comodità ho usate un ObjectDataSource e una classe per avere i Dati ma ovviamente puoi usare un SqlDataSource o un altro meccanismo a tua scelta.
codice:
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server"
SelectMethod="ElencoCategorie" TypeName="WebApplication1.DataService">
</asp:ObjectDataSource>
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="ObjectDataSource1">
<HeaderTemplate>
<h1>Elenco Prodotti</h1>
</HeaderTemplate>
<ItemTemplate>
<asp:Label runat="server" ID="Label1" Text='<%# Eval("NomeCategoria") %>'></asp:Label>
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server"
SelectMethod="ElencoByCat" TypeName="WebApplication1.DataService">
<SelectParameters>
<asp:ControlParameter Name="nomeCat" ControlID="Label1" PropertyName="Text" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:Repeater ID="Repeater2" runat="server" DataSourceID="ObjectDataSource2">
<ItemTemplate>
<%# Eval("NomeProdotto") %></p>
</ItemTemplate>
</asp:Repeater>
</ItemTemplate>
</asp:Repeater>
questo è il code behind ma è specifico di questo esempio. Quello che ti interessa è il codice sopra.
codice:
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
public class Categoria
{
public string NomeCategoria { get; set; }
public List<Prodotto> Prodotti { get; set; }
public Categoria()
{
Prodotti = new List<Prodotto>();
}
}
public class Prodotto
{
public string NomeProdotto { get; set; }
}
public class DataService
{
private List<Categoria> elenco;
public DataService()
{
elenco = new List<Categoria>
{
new Categoria { NomeCategoria = "Categoria 1", Prodotti = new List<Prodotto> { new Prodotto {NomeProdotto = "Prodotto 1" }, new Prodotto {NomeProdotto = "Prodotto 2" } } },
new Categoria { NomeCategoria = "Categoria 2", Prodotti = new List<Prodotto> { new Prodotto {NomeProdotto = "Prodotto 3" }, new Prodotto {NomeProdotto = "Prodotto 4" } } },
new Categoria { NomeCategoria = "Categoria 3", Prodotti = new List<Prodotto> { new Prodotto {NomeProdotto = "Prodotto 5" }, new Prodotto {NomeProdotto = "Prodotto 6" } } },
new Categoria { NomeCategoria = "Categoria 4", Prodotti = new List<Prodotto> { new Prodotto {NomeProdotto = "Prodotto 7" }, new Prodotto {NomeProdotto = "Prodotto 8" } } },
};
}
public List<Categoria> ElencoCategorie()
{
return elenco;
}
public List<Prodotto> ElencoByCat(string nomeCat)
{
var cat = elenco.FirstOrDefault(c => c.NomeCategoria.Equals(nomeCat));
if (cat != null)
return cat.Prodotti;
else
return null;
}
}