repeater的嵌套(转+总结)[http://www.cnblogs.com/esshs/archive/2005/04/07/132825.html]
實現效果如下圖:
?
前臺代碼:
?
Code
????<div>
????????<asp:Repeater?ID="Repeater1"?runat="server"?OnItemDataBound="Repeater1_ItemDataBound">
????????<HeaderTemplate>
????????<table?width="100%"?border="0"??cellpadding="0"?cellspacing="0"></table>
????????</HeaderTemplate>
????????<ItemTemplate>
????????<!--分類名稱-->
????????<tr>
????????<td><%#Eval("cate_name")?%>
????????<br?/>
????????</td>
????????</tr>
????????<asp:Repeater?ID="Repeater2"?runat="server">
????????<ItemTemplate>
????????<tr>
????????<td> <%#Eval("proc_name")%>?<br?/>
????????</td>
????????</tr>
????????</ItemTemplate>
????????</asp:Repeater>
????????<br?/>
????????</ItemTemplate>
????????<AlternatingItemTemplate>
????????<tr>
????????<td><%#Eval("cate_name")?%>
????????</td>
????????</tr>
????????</AlternatingItemTemplate>
????????<SeparatorTemplate>
????????</SeparatorTemplate>
????????<FooterTemplate>
????????</table>
????????</FooterTemplate>
????????</asp:Repeater>
????????
????
????</div>
?
后臺代碼:
?
Codeprotected?void?Page_Load(object?sender,?EventArgs?e)
????{
????????this.Repeater1.DataSource?=?DataBind();
????????this.Repeater1.DataBind();
????}
????/**////?<summary>
????///類別的數據源
????///?</summary>
????public?DataSet?DataBind()
????{
????????string?Connstring?=?"server=.;database=temptest;uid=sa;pwd=sa;";
????????string?sqlStr?=?"select?*?from?Categories";
????????using?(SqlConnection?con?=?new?SqlConnection(Connstring))
????????{
????????????con.Open();
????????????SqlDataAdapter?sda?=?new?SqlDataAdapter(sqlStr,?con);
????????????DataSet?ds?=?new?DataSet();
????????????sda.Fill(ds,?"Category");
????????????return?ds;
????????}
????}
????protected?void?Repeater1_ItemDataBound(object?sender,?RepeaterItemEventArgs?e)
????{
????????if?(e.Item.ItemType?==?ListItemType.Item?||?e.Item.ItemType?==?ListItemType.AlternatingItem)
????????{
????????????Repeater?rptProduct?=?(Repeater)e.Item.FindControl("Repeater2");
????????????if?(rptProduct?!=?null)
????????????{
????????????????//找到分類?Repeater關聯的數據項
????????????????DataRowView?rowv?=?(DataRowView)e.Item.DataItem;
????????????????//提取分類ID
????????????????int?Cate_id?=?Convert.ToInt32(rowv["cate_id"]);
????????????????//根據分類ID來獲取分類下的產品,并綁定產品Repeater2
????????????????rptProduct.DataSource?=?DataBind(Cate_id);
????????????????rptProduct.DataBind();
????????????}
????????}
????}
????/**////?<summary>
????///類別下產品的數據源
????///?</summary>
????public?DataSet?DataBind(int?category)
????{
????????string?Connstring?=?"server=.;database=temptest;uid=sa;pwd=sa;";
????????string?sqlStr?=?"select?*?from?Procducts?where?cate_id=@cate_id";
????????using?(SqlConnection?con?=?new?SqlConnection(Connstring))
????????{
????????????con.Open();
????????????SqlCommand?cmd?=?new?SqlCommand(sqlStr,?con);
????????????cmd.Parameters.Add(new?SqlParameter("@cate_id",?category));
????????????SqlDataAdapter?sda?=?new?SqlDataAdapter(sqlStr,con);
????????????sda.SelectCommand?=?cmd;
????????????DataSet?ds?=?new?DataSet();
????????????sda.Fill(ds,?"Procutes");
????????????return?ds;
????????}
????}
?
數據庫文檔:
?
Codecreate?database?temptest
go
create?table?Categories
(
????cate_id?int?not?null,
????cate_name?varchar(20)?not?null
)
?
create?table?Procducts
(
????porc_id?int?not?null,
????cate_id?int?not?null,
????proc_name?varchar(20)?not?null
)
insert?into?Categories?values(1,'數碼')
insert?into?Categories?values(2,'書籍')
insert?into?Procducts?values(1,1,'筆記本')
insert?into?Procducts?values(2,1,'數碼相機')
insert?into?Procducts?values(3,1,'手機')
insert?into?Procducts?values(4,1,'PSP')
insert?into?Procducts?values(5,1,'360xbox')
insert?into?Procducts?values(6,2,'Asp.net?C#')
insert?into?Procducts?values(7,2,'VB')
insert?into?Procducts?values(8,2,'Jave')
insert?into?Procducts?values(9,2,'PHP')
insert?into?Procducts?values(10,2,'Ruby')
轉載于:https://www.cnblogs.com/williamwindy/archive/2009/01/06/1370717.html
總結
以上是生活随笔為你收集整理的repeater的嵌套(转+总结)[http://www.cnblogs.com/esshs/archive/2005/04/07/132825.html]的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .net去除html标签代码
- 下一篇: 【微软亚洲研究院院长洪小文专访---谈大