Repeater嵌套。子控件如何得到父控件中的值

yzg614 2008-05-15 11:34:20
<asp:Repeater ID="rpCity" runat="server" OnItemDataBound="rpCity_ItemDataBound">
<ItemTemplate>
<div class="box">
<div class="area_01"><%#Eval("city_name")%>"><%#Eval("city_code")%></div>
<div class="c">
<ul>
<asp:Repeater ID="rpTitle" runat="server">
<ItemTemplate>
<li><a href="http://这里如何取rpCity中的city_code" title="<%#Eval("HC_NewTitle")%>" target="_blank">
<div class="txt">
<%#Eval("HC_NewTitle")%>
</div>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
</div>
</ItemTemplate>
</asp:Repeater>
在子rpTitle中如何取父rpCity中的<%#Eval("city_code")%>的值
...全文
527 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangchao2011 2011-12-04
  • 打赏
  • 举报
回复
与楼主同样问题,不过 看到这个帖子 问题解决了 非常感谢 高手们
avrilxu 2008-05-15
  • 打赏
  • 举报
回复
amandag 2008-05-15
  • 打赏
  • 举报
回复
也可以简单一点..

<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
OrderID: <%# Eval("OrderID")%>
CustomerID :
<asp:Label ID="Label1" runat="server" Text='<%#Eval("CustomerID")%>'></asp:Label> <br />
<asp:Repeater ID="Repeater2" runat="server" DataSource='<%# GetOrderDetails(Convert.ToInt32(Eval("OrderID"))) %>'>
<ItemTemplate>
  
子容器得到CustomerID : <%# ((Label)((RepeaterItem)(Container.NamingContainer.NamingContainer)).FindControl("Label1")).Text %>
UnitPrice: <%#Eval("UnitPrice")%> <br />
</ItemTemplate>
</asp:Repeater>
<br />
</ItemTemplate>
</asp:Repeater>
amandag 2008-05-15
  • 打赏
  • 举报
回复
目前想到的方法,请参考


<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
OrderID: <%# Eval("OrderID")%>
CustomerID :
<asp:Label ID="Label1" runat="server" Text='<%#Eval("CustomerID")%>'></asp:Label> <br />
<asp:Repeater ID="Repeater2" runat="server" DataSource='<%# GetOrderDetails(Convert.ToInt32(Eval("OrderID"))) %>'>
<ItemTemplate>
  
子容器得到CustomerID : <%# ((Label)((RepeaterItem)((Repeater)(((RepeaterItem)Container).NamingContainer)).NamingContainer).FindControl("Label1")).Text %>
UnitPrice: <%#Eval("UnitPrice")%> <br />
</ItemTemplate>
</asp:Repeater>
<br />
</ItemTemplate>
</asp:Repeater>



private void BindRepeater()
{
SqlConnection cn = new SqlConnection(@"server=.\SQLExpress;uid=sa;pwd=;database=Northwind");
SqlDataAdapter da = new SqlDataAdapter("select top 10 orderid, CustomerID, OrderDate from Orders", cn);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
Repeater1.DataSource = ds.Tables[0].DefaultView;
Repeater1.DataBind();
}

protected DataTable GetOrderDetails(int orderID)
{
SqlConnection cn = new SqlConnection(@"server=.\SQLExpress;uid=sa;pwd=;database=Northwind");
SqlDataAdapter da = new SqlDataAdapter("select ProductID, UnitPrice from [Order Details] where orderid = @orderid", cn);
da.SelectCommand.Parameters.AddWithValue("@orderid", orderID);
DataSet ds = new DataSet();
cn.Open();
da.Fill(ds);
cn.Close();
return ds.Tables[0];
}

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
BindRepeater();
}
}
Aderlee 2008-05-15
  • 打赏
  • 举报
回复
要把<%#Eval("city_code")%>值放在一個控件的Text或其他屬性里獲取,比如
<div class="area_01"> <asp:Label Runat="server" ID="Label1" Text='<%#Eval("city_name")%>'> </asp:Label>
</div>
在後臺你就可以通過findcontrol到那個Label1來得到它的Text了
geoffe 2008-05-15
  • 打赏
  • 举报
回复
rpCity的databind里面绑定rpTitle
像这种潜套数据显示可以这么做
当然了你也可以在rpCity的rowcommand里面
上面的方法是初始化一起就出来了
下面的方法是动态的显示
  • 打赏
  • 举报
回复
<input id="hd1" type="hidden" runat="server" value='<%# Eval...%>' />

repeater_databind...

(( (e....as row).parent.parent as row).findcontrol as ...).value

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧