【发布时间】:2011-08-09 14:38:39
【问题描述】:
我在我的 aspx 页面上有嵌套的转发器。在外部转发器中,我显示产品列表,在内部转发器中,我正在显示与每个产品关联的附加选项列表。内部转发器包含一个复选框、文本框、标签和其他东西。当用户选择内部中继器中的复选框时,我想在外部中继器中找到控件。为了处理此问题,我使用以下代码。
<asp:Repeater ID="OuterRepeater" runat="server"
onitemdatabound="OuterRepeater_ItemDataBound" >
<ItemTemplate>
<asp:Label ID="CodeLabel" runat="server" Text='<%# Eval("Code") %>'></asp:Label>
<asp:Repeater ID="InnerRepeater" runat="server" OnItemCreated="InnerRepeater_ItemCreated">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="true"/>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
......
.......
</ItemTemplate>
</asp:Repeater>
......
......
</ItemTemplate>
</asp:Repeater>
protected void InnerRepeater_ItemCreated(object sender, RepeaterItemEventArgs e)
{
RepeaterItem ri = (RepeaterItem)e.Item;
if (ri.ItemType == ListItemType.Item || ri.ItemType == ListItemType.AlternatingItem
)
{
CheckBox cb = ri.FindControl("CheckBox1") as CheckBox;
cb.CheckedChanged += new EventHandler(CheckBox1_CheckedChanged);
}
}
private void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;
if (cb.Checked)
{
//do something
}
else
{
//do something
}
}
但是由于某种原因复选框的checkedChanged事件没有触发。另外我不确定如何在内部转发器复选框控件的选中更改事件中访问外部转发器的文本框。
有人可以帮我解决这个问题吗?
谢谢
【问题讨论】:
标签: asp.net checkbox nested repeater