控件Repeater的嵌套使用

本文介绍ASP.NET中Repeater控件的嵌套使用方法,包括前后端代码实现及事件处理技巧。通过实例展示了如何在点击事件下展开子Repeater,避免一次性加载所有数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

控件Repeater的嵌套使用

左直拳

可以嵌套使用Repeater

页面代码:

<asp:Repeater ID="rpParent" runat="server" OnItemCommand="rpParent_ItemCommand">

<HeaderTemplate>

<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="5" style="text-align:left;">

<tr>

<td>父字段1</td>

<td>父字段2</td>

<td></td>

</tr>

</HeaderTemplate>

<ItemTemplate>

<tr>

<td><%# Eval("Parent1")%><input id="txtParent1" type="hidden" value='<%# Eval("Parent1")%>' runat="server" /></td>

<td><%# Eval("Parent2")%></td>

<td><asp:LinkButton ID="lnkShowChild" runat="server" CommandName="ShowChild">展开孩子</asp:LinkButton></td>

</tr>

<tr><td colspan="3">

<asp:Repeater ID="rpChild" runat="server">

<HeaderTemplate>

<table width="100%" height="100%" border="0" cellspacing="0" cellpadding="5" style="text-align:left;">

<tr><td>子字段1</td><td>子字段2</td>

</tr>

</HeaderTemplate>

<ItemTemplate>

<tr><td><%# Eval("Child1")%></td><td><%# Eval("Child2")%></td></tr>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

</td></tr>

</ItemTemplate>

<FooterTemplate>

</table>

</FooterTemplate>

</asp:Repeater>

后台代码:

protected void rpParent_ItemCommand(object source, RepeaterCommandEventArgs e)

{

if (e.CommandName == "ShowChild")

{

Repeater rp = (Repeater)e.Item.FindControl("rpChild");

HtmlInputHidden txtChild = (HtmlInputHidden)e.Item.FindControl("txtChild");

rp.DataSource = _GetData(txtChild.Value);

rp.DataBind();

}

}

2个地方值得一提:

1、 <%# Eval("Child1")%> 这类的写法,是对距离最近的Repeater而言。象这里的例子,子Repeater嵌套在父Repeater里,但位于子Repeater里的<%# Eval("Child1")%> 不会与父控件有冲突;

2、 后台代码这里支持事件。不象网上找到的许多例子,都是装载时一口气打开。而是点击“打开孩子”才展开。参数是存放在一个HiddenHTML文本框里。之前听说只有ASP.NET的控件才有可能在后台FindControl,但现在看来也可以,也许是20的缘故吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值