访问中继器内部的复选框
本文关键字:复选框 内部 中继器 访问 | 更新日期: 2023-09-27 18:04:39
在我的repeater的ItemTemplate中,我有一个CheckBox和一个禁用的TextBox,我需要实现这个想法:TextBox只有在CheckBox被选中时才被启用。所以我设置CheckBox AutoPostBack为true,我试着把这段代码放在ItemDataBound中。但我找不到我的控制,这很奇怪,因为我使用相同的代码,但在循环"MyRptr.Item[I].FindControl....",它的工作原理!. .我不想遍历所有的Item,我只希望知道创建CheckBox的Item编号或位置。我也试着为CheckBox的CheckedChanged事件创建一个事件句柄,但我也找不到CheckBox !
protected void MyRptr_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
CheckBox ChkBx = e.Item.FindControl("IsSelected_ChkBx") as CheckBox;
if (ChkBx.Checked == true)
{
TextBox TxtBx = e.Item.FindControl("Value_TxtBx") as TextBox;
TxtBx.Enabled = true;
}
}
<asp:Repeater ID="MyRptr" runat="server"
onitemdatabound="MyRptr_ItemDataBound">
<ItemTemplate>
<asp:CheckBox ID="IsSelected_ChkBx" runat="server" Text='<%# Eval("Item") %>' AutoPostBack="True" OnCheckedChanged="IsSelected_ChkBx_CheckedChanged" />
<asp:TextBox ID="Value_TxtBx" runat="server" Enabled="false"></asp:TextBox>
<asp:HiddenField ID="ID_HdnFld" runat="server" Value='<%# Eval("ID") %>' />
</ItemTemplate>
<SeparatorTemplate>
<br></br>
</SeparatorTemplate>
</asp:Repeater>
所以基本上我需要一个干净和简单的方式来实现我的逻辑,如果我能得到一个解释发生了什么,这将是伟大的,所以有什么想法=)?
你可以找到你的文本框如下,但我认为它更好的使用jQuery而不是服务器端事件
protected void IsSelected_ChkBx_CheckedChanged(object sender, EventArgs e)
{
var ch = (CheckBox)sender;
var txt = ch.Parent.FindControl("Value_TxtBx") as TextBox;
}