Очень часто при разработке веб-приложений приходится использовать двууровневую иерархию. Например вам нужно динамически вывести категории товаров и сами товары в категориях. Выглядеть это будет примерно так:
- Рыба
- Форель
- Семга
- Окунь
- Мясо
- Говядина
- Свинина
Обычно такие списки делаются с помощью Repeater. И действительно все что надо, что бы отобразить категории - пара строк кода:
<asp:Repeater runat="server" ID="catRepeater"> <HeaderTemplate><ul></HeaderTemplate> <ItemTemplate><li><%# DataBinder.Eval(Container.DataItem, "CategoryName")%></li></ItemTemplate> <FooterTemplate></ul></FooterTemplate> </asp:Repeater>
protected void Page_Load(object sender, EventArgs e) { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); SqlCommand command1 = new SqlCommand("SELECT CategoryID, CategoryName FROM Categories", conn); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dt = new DataTable(); adapter.Fill(dt); catRepeater.DataSource = dt; catRepeater.DataBind(); }
<asp:Repeater runat="server" ID="catRepeater"> <HeaderTemplate><ul></HeaderTemplate> <ItemTemplate><li><%# DataBinder.Eval(Container.DataItem, "CategoryName")%><asp:Repeater runat="server" id="itemRepeater" datasource='<%# GetItemDS(DataBinder.Eval(Container.DataItem,"CategoryID").ToString())%>'> <ItemTemplate><%# DataBinder.Eval(Container.DataItem, "ItemName")</ItemTemplate> </asp:Repeater></li></ItemTemplate> <FooterTemplate></ul></FooterTemplate> </asp:Repeater>
protected DataTable GetItemDS(string categoryID) { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); SqlCommand command = new SqlCommand("SELECT ItemName FROM Items WHERE CategoryID=@CategoryID", conn); command.Parameter.Add("@CategoryID", SqlDbType.Int).Value = categoryID; SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dt = new DataTable(); adapter.Fill(dt); return dt; }
2 комментария:
порядок разработки разработка сайтов http://web-miheeff.ru порядок разработки
Ты очень помог, спасибо. Правда немного не понятно, как сделать привязку (бинд), если использую бизнес объекты, которые просто биндятся к репитеру (repCategory.datasource = catelog.GetCategory)...
Может покажешь, как в таком случае делать.
Заранее большое спасибо.
Отправить комментарий