复选框选中的更改将禁用另一个复选框

时间:2018-11-21 06:47:52

标签: c# .net checkbox webforms isenabled

我有两个复选框。如果第一个复选框被选中,则第二个复选框将被禁用;如果第一个复选框未被选中,则第二个复选框将被启用。

<div class="data">
<asp:CheckBox ID="firstCheckBox" runat="server" CssClass="LabelText" EnableViewState="False" AutoPostBack="True" />
</div>

<div class="data">
<asp:CheckBox ID="secondCheckBox" runat="server" CssClass="LabelText" EnableViewState="False" AutoPostBack="True" />
</div>

这是我在Page_Load中的控制部分;

if (firstCheckBox.Checked)
{
    secondCheckBox.Enabled = false;

}
else
{
    secondCheckBox.Enabled = true;
}

当我选中第一个复选框时,第二个复选框没有任何反应。在我选中第二个复选框后,secondcheckbox已被选中并禁用。

我想念什么?

3 个答案:

答案 0 :(得分:1)

您可以使用javascript启用或禁用复选框。 firstCheckBoxsecondCheckBox是您复选框的ID。

if(document.getElementById("firstCheckBox").checked = true)
document.getElementById("secondCheckBox").disabled = true;
else
document.getElementById("secondCheckBox").disabled = false;

答案 1 :(得分:0)

您可以使用checkBox CheckChanged事件来执行此操作。 请从表单的加载事件中删除条件,然后添加以下代码。

<div class="data">
<asp:CheckBox ID="firstCheckBox" runat="server" CssClass="LabelText" EnableViewState="False" AutoPostBack="True" OnCheckedChanged="CheckBox1_Check_Clicked" />
</div>

<div class="data">
<asp:CheckBox ID="secondCheckBox" runat="server" CssClass="LabelText" EnableViewState="False" AutoPostBack="True" OnCheckedChanged="CheckBox2_Check_Clicked" />
</div>

protected void CheckBox1_Check_Clicked(Object sender, EventArgs e) 
{
if(CheckBox1.Checked==true)
{
CheckBox2.Enable=false;
}
else
{
CheckBox2.Enable=true;
}
}


protected void CheckBox2_Check_Clicked(Object sender, EventArgs e) 
{
if(CheckBox2.Checked==true)
{
CheckBox1.Enable=false;
}
else
{
CheckBox1.Enable=true;
}
}

因此,每个复选框应具有两个CheckChanged事件。自动回传。如果应用某种逻辑,您只能对一个事件进行处理。

答案 2 :(得分:0)

我假设您想在服务器端设置第二个复选框的Enabled状态,因此您应该像下面的示例一样处理第一个复选框的CheckedChanged事件:

private void firstCheckBox_CheckedChanged(object sender, EventArgs e)
{
    secondCheckBox.Enabled = !firstCheckBox.Checked;
}

为什么未触发复选框checked事件处理程序的问题是因为您将逻辑放在Page_Load事件中而不是第一个复选框的CheckedChanged事件中。

类似的问题:

If one checkbox is checked, set the other to unchecked