C# 选中一个复选框';它在中继器内
在我的repeater的ItemTemplate中,我有一个复选框和一个禁用的TextBox,我需要实现这个想法:TextBox只有在复选框被选中时才会被启用。。因此,我将复选框AutoPostBack设置为true,并尝试将此代码放入ItemDataBound中。但是我找不到我的控件,这很奇怪,因为我使用了相同的代码,但是在循环“MyRptr.Item[I].FindControl….”中,它可以工作。。我不想遍历所有项目,我只希望我能知道创建复选框的项目编号或位置。我还尝试为复选框的CheckedChanged事件创建事件句柄,但我也找不到复选框C# 选中一个复选框';它在中继器内,c#,asp.net,webforms,C#,Asp.net,Webforms,在我的repeater的ItemTemplate中,我有一个复选框和一个禁用的TextBox,我需要实现这个想法:TextBox只有在复选框被选中时才会被启用。。因此,我将复选框AutoPostBack设置为true,并尝试将此代码放入ItemDataBound中。但是我找不到我的控件,这很奇怪,因为我使用了相同的代码,但是在循环“MyRptr.Item[I].FindControl….”中,它可以工作。。我不想遍历所有项目,我只希望我能知道创建复选框的项目编号或位置。我还尝试为复选框的Chec
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>
protectedvoid MyRptr\u ItemDataBound(对象发送方,RepeaterItemEventArgs e)
{
复选框ChkBx=e.Item.FindControl(“IsSelected_ChkBx”)作为复选框;
if(ChkBx.Checked==true)
{
TextBox TxtBx=e.Item.FindControl(“Value_TxtBx”)作为TextBox;
TxtBx.Enabled=true;
}
}
因此,基本上我需要一种干净简单的方法来实现我的逻辑,如果我能对发生的事情做出解释,那就太好了,所以有什么想法吗?你可以找到如下文本框,但我认为最好使用jQuery而不是服务器端事件
protected void IsSelected_ChkBx_CheckedChanged(object sender, EventArgs e)
{
var ch = (CheckBox)sender;
var txt = ch.Parent.FindControl("Value_TxtBx") as TextBox;
}
(Y) 太好了。。那起作用了。。我认为JQuery或JavaScript通常会更好,你能帮我吗?我以前从未使用过JQuery或JavaScript。。你能提供一些代码吗。我不会让别人为我写代码,但我真的从来没有用过这个!