首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

嵌套repeater 绑定外repeater数据解决办法

2012-08-31 
嵌套repeater 绑定外repeater数据repeater中嵌套一个repeater我想在嵌套的repeater中绑定一个上面repeater

嵌套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>

[解决办法]
给你个直接运行看效果的例子

嵌套的数据控件在子控件绑定时访问父控件的数据绑定项的方法

HTML code
<%@ 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控件,然后绑定数据即可。
[解决办法]

探讨

在外层Repeater控件的OnItemDataBound事件中,通过FindControl你的第二个Repeater控件,然后绑定数据即可。

[解决办法]
嵌套repeater很简单的。楼上一大把的大佬们都ok
[解决办法]
请参考,之前为别人的写的
http://topic.csdn.net/u/20120727/20/05435e12-c397-4abc-9bc0-56448df44263.html
[解决办法]
楼上的都是大佬啊
[解决办法]
探讨
在外层Repeater控件的OnItemDataBound事件中,通过FindControl你的第二个Repeater控件,然后绑定数据即可。

热点排行