0

我搜索了所有讨论此问题的主题,但似乎找不到使用 Asp.net C# 来解释该问题的主题,一切都是 javascript 或 MVC 或 PHP,我对此提出新问题的理由。

我有 2 个输入控件类型复选框

<input runat="server" type="checkbox"  name="chkChildSexMale" id="chkChildSexMale" />
<input runat="server" type="checkbox" name="chkChildSexFemale" id="chkChildSexFemale"/>
    <asp:Button ID="btnSaveCheckBoxes" runat="server" Text="Save CheckBox" OnClick="btnSaveCheckBoxes_Click" />

*已编辑**

protected void SaveCheckBoxes()
{
  if (chkChildSexMale.Checked)
      {
          do something
      }
      else if (chkChildSexFemale.Checked)
      {
          do something else
      }

}

然后在我的按钮点击事件中我调用这个方法

protected void btnSaveCheckBoxes_Click(object sender, EventArgs e)
{
SaveCheckBoxes();
}
4

3 回答 3

5

对于两个互斥的选择,您应该使用输入类型单选,而不是复选框:

<input runat="server" type="radio"  name="chkChildSex" value="male" id="chkChildSexMale" />
<input runat="server" type="radio" name="chkChildSex" value="female" id="chkChildSexFemale" />

当您name对两个复选框使用相同的属性时,第二个会覆盖第一个。当您name对两个单选按钮使用相同的属性时,它会将它们关联起来,并且值是选中项的值。

于 2013-08-27T20:43:22.370 回答
1

尽管两个复选框的 id 属性不同,但 name 属性是相同的。

此外,关于使用单选按钮的建议最有意义,具体取决于您尝试执行的操作。

<input runat="server" type="radio" name="rdoChildSex" value="Male" />
<input runat="server" type="radio" name="rdoChildSex" value="Female" />

同样,当您需要在两个选项之一之间进行选择时,我建议您使用上面的单选按钮示例。但是如果你想为复选框获得类似收音机的功能,你可以试试这个......

<input runat="server" type="checkbox" name="chkChildSexMale" value="Male" OnCheckedChanged="Check_Clicked" />
<input runat="server" type="checkbox" name="chkChildSexFemale" value="Female" OnCheckedChanged="Check_Clicked"/>

void Check_Clicked(Object sender, EventArge e)
{
    var checkbox = ((CheckBox)sender);       

    if (checkbox.Value == "Male")
    {
        chkChildSexFemale.Checked = false;
        chkChildSexMale.Checked = true;
        do something...
    }
    else
    {
        chkChildSexMale.Checked = false;
        chkChildSexFemale.Checked = ;
        do something else...
    }
}

上面的代码应该真的涵盖了你所有的基础。甚至有些矫枉过正。但应该工作。


尝试将您的代码更改为以下内容:

    if (chkChildSexMale.Checked == true)   
    {
         do something   
    }   
    else if (chkChildSexFemale.Checked == false)   
    {
         do something else   
    }
于 2013-08-27T20:44:30.220 回答
0

我的问题是页面加载我使用我的数据阅读器根据某些值设置复选框。当我点击我的按钮时,它已经用数据库中的值覆盖了我选择的值。所以我不得不添加 if (!Page.IsPostBack)

提供我提供的信息真的很难弄清楚,所以我感谢所有人的帮助

于 2013-08-30T02:19:10.790 回答