我已经搜索了所有讨论这个问题的主题,并且似乎找不到使用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();
}
答案 0 :(得分: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
属性时,它会关联它们,并且值是已检查项目的值。
答案 1 :(得分: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
}
答案 2 :(得分:0)
我的问题是页面加载我使用我的数据阅读器根据特定值设置复选框。当我点击我的按钮时,单击它是用数据库中的值写入我选择的值。所以我必须添加if(!Page.IsPostBack)
提供我提供的信息真的很难弄清楚,所以我感谢所有人试图提供帮助