嵌套repeater 绑定外repeater数据
repeater中嵌套一个repeater
我想在嵌套的repeater中绑定一个上面repeater中数据源中的数据
怎么绑?
[解决办法]
<asp:Repeater ID="rptOrderList" runat="server" OnItemDataBound="rptOrderList_ItemDataBound">
<ItemTemplate>
<tr id="One<%# Eval("id") %>" onmouseover="Fun_mouseOver('One<%# Eval("ID") %>')" onmouseout="Fun_mouseOut('One<%# Eval("ID") %>')">
<td height="26"><%# Eval("id") %> </td>
<td height="26"><%# Eval("mainSaleInfo") %></td>
<td height="26"><%# Eval("amount","{0:C}") %></td>
<td height="26"><%# Eval("source") %></td>
<td height="26"><%# Eval("kdate") %></td>
<td height="26"><%# Eval("senddate") %></td>
<td height="26"><%# Eval("overdate") %></td>
<td height="26"><%# Eval("salename") %></td>
<td height="26"><%# Eval("StoreName") %></td>
<td height="26"><%# Eval("financeName") %></td>
<td height="26"><%# SetAudioUrl(Eval("audioUrl").ToString()) %></td>
<td height="26"><%# PublicStr.GetStateName(Eval("state").ToString())%></td>
<td height="26"><a href="javascript:showOrderInfo('<%# Eval("id") %>')">查看详细</a> </td>
</tr>
<tr style="display:none;" id="<%# Eval("id") %>">
<td colspan="13" align="center" >
<br />
<table width="80%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td height="30" align="center" bgcolor="#B5D2F1">客户名称 </td>
<td height="30" align="center" bgcolor="#B5D2F1">联系电话</td>
<td height="30" align="center" bgcolor="#B5D2F1">付款方式</td>
<td height="30" align="center" bgcolor="#B5D2F1">联系地址</td>
<td height="30" align="center" bgcolor="#B5D2F1">快递信息记录</td>
</tr>
<tr>
<td height="26"><%# Eval("kname") %></td>
<td height="26"><%# Eval("ktel") %></td>
<td height="26"><%# Eval("kpaykind") %></td>
<td height="26"><%# Eval("kaddr") %></td>
<td height="26"><%# Eval("emskind") %><%# Eval("emsnum") %></td>
</tr>
<asp:Repeater ID="rptOrderDetail" runat="server">
<ItemTemplate>
<tr >
<td height="26"><%# Eval("productname") %></td>
<td height="26"><%# Eval("price", "{0:C}")%></td>
<td height="26"><%# Eval("cnt") %></td>
<td height="26"><%# Eval("amount","{0:C}") %></td>
<td height="26"><%# Eval("isgift").ToString()=="False" ? "卖品" : "赠品" %></td>
</tr>
</ItemTemplate>
</asp:Repeater>
</table>
<br />
</td>
</tr>
</ItemTemplate>
</asp:Repeater>
[解决办法]
给你个直接运行看效果的例子
嵌套的数据控件在子控件绑定时访问父控件的数据绑定项的方法
<%@ Page Language="C#" EnableViewState="false" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><script runat="server"> protected void Page_Load(object sender, EventArgs e) { System.Data.DataSet ds = new System.Data.DataSet(); System.Data.DataTable dataTable1 = new System.Data.DataTable("BlogUser"); System.Data.DataRow dr; dataTable1.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32))); dataTable1.Columns.Add(new System.Data.DataColumn("UserName", typeof(System.String))); dataTable1.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["UserId"] }; for (int i = 0; i < 8; i++) { dr = dataTable1.NewRow(); dr[0] = i; dr[1] = "用户姓名【孟子E章】测试" + i.ToString(); dataTable1.Rows.Add(dr); } System.Data.DataTable dataTable2 = new System.Data.DataTable("BlogArticle"); dataTable2.Columns.Add(new System.Data.DataColumn("ArticleId", typeof(System.Int32))); dataTable2.Columns.Add(new System.Data.DataColumn("Title", typeof(System.String))); dataTable2.Columns.Add(new System.Data.DataColumn("UserId", typeof(System.Int32))); dataTable2.PrimaryKey = new System.Data.DataColumn[] { dataTable1.Columns["ArticleId"] }; Random rd = new Random(); for (int i = 0; i < 20; i++) { dr = dataTable2.NewRow(); dr[0] = i; dr[1] = "文章标题例子" + i.ToString(); dr[2] = rd.Next(0, 7); dataTable2.Rows.Add(dr); } ds.Tables.Add(dataTable1); ds.Tables.Add(dataTable2); System.Data.DataColumn parentColumn = ds.Tables["BlogUser"].Columns["UserId"]; System.Data.DataColumn childColumn = ds.Tables["BlogArticle"].Columns["UserId"]; System.Data.DataRelation user_article = new System.Data.DataRelation("UserId", parentColumn, childColumn); ds.Relations.Add(user_article); this.parentRepeater.DataSource = ds.Tables["BlogUser"].DefaultView; this.parentRepeater.DataBind(); }</script><html xmlns="http://www.w3.org/1999/xhtml"><head></head><body> <form id="form1" runat="server"> <!-- 父Repeater开始 --> <asp:Repeater ID="parentRepeater" runat="server"> <HeaderTemplate><table border="1"></HeaderTemplate> <FooterTemplate></table></FooterTemplate> <ItemTemplate> <tr style="text-align:left"> <th style="background-color:#EEEEEE"><input type="checkbox" name="cb_<%# Container.ItemIndex + 1 %>" /> <%# DataBinder.Eval(Container.DataItem, "UserName")%> </th> </tr> <ul> <!-- 子Repeater开始 --> <asp:Repeater ID="childRepeater" runat="server" DataSource='<%# ((System.Data.DataRowView)Container.DataItem).Row.GetChildRows("UserId") %>'> <ItemTemplate> <tr> <td style="padding-left:20px"> <input type="checkbox" name="cb_<%# ((RepeaterItem)Container.Parent.Parent).ItemIndex %>_<%# Container.ItemIndex%>" /> <%# DataBinder.Eval(Container.DataItem, "[\"Title\"]")%> 父级数据:<%# DataBinder.Eval(((RepeaterItem)Container.Parent.Parent).DataItem, "UserName")%> 父级序号:<%# ((RepeaterItem)Container.Parent.Parent).ItemIndex %> </td> </ItemTemplate> </asp:Repeater> </tr> <!-- 子Repeater结束 --> </ItemTemplate> </asp:Repeater> <!-- 父Repeater结束 --> </form></body></html>
[解决办法]
在外层Repeater控件的OnItemDataBound事件中,通过FindControl你的第二个Repeater控件,然后绑定数据即可。
[解决办法]