今天做了一个小项目学习一下,是关于两个Repeater的嵌套使用的:
关于Repeater的嵌套,关键在于数据项的绑定。
首先,外Repeater需要设置OnItemDataBound事件,在事件中添加子Repeater的数据项绑定;
<asp:Repeater ID="Rep_Category" runat="server" OnItemDataBound="rptypelist_ItemDataBound"><HeaderTemplate><table id="Tb_CompanyType"><tr><%-- <td>测试</td>--%></tr></HeaderTemplate><ItemTemplate><tr><td class="TableFont" width="400px"><asp:Label runat="server" ID="CompanyName" Text='<%# Eval("PrizeCategory") %>'>" ></asp:Label></td></tr><tr><td><div><asp:Repeater ID="Rep_Company" runat="server"><ItemTemplate><asp:Label runat="server" Width="300px" name="name" ID="CompanyName" Text='<%# Eval("CompanyName") %>'></asp:Label><asp:Button ID="btn_Complainant" runat="server" Name="Complainant" Text="投诉" OnClick="Complainant_Click" /><br /></ItemTemplate></asp:Repeater></div></td></tr></ItemTemplate><FooterTemplate></table></FooterTemplate></asp:Repeater>
然后在对应的cs文件中,添加
protected void rptypelist_ItemDataBound(object sender, RepeaterItemEventArgs e){if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem){
// 查找子RepeaterRepeater companyRepeater = (Repeater)e.Item.FindControl("Rep_Company");//找到分类Repeater关联的数据项 DataRowView roww = (DataRowView) e.Item.DataItem;//提取分类ID string str = roww["PrizeCategory"].ToString();// 控制管理内部Repeater的数据项DataSet ds = new DataSet();string companysql = "select xxxx from tb_Company where xxxx='" + str + "'";ds = SqlHelper.ExecuteDataSet(companysql, CommandType.Text, null);companyRepeater.DataSource = ds;companyRepeater.DataBind();}}
通过这种方法可将Repeater进行嵌套。