2013-08-27 26 views
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" /> 

* 在我的按钮单击事件EDITED **

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

} 

然后我把这个方法

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

摆脱'名字= “” – SLaks

+0

我改了名字,但是没有解决问题chkChildSexMale.Checked总是成立的,即使它没有被检查 –

回答

0

我的问题是在页面加载我是用我的数据读取器来设定基于某些值的复选框。当我点击我的按钮时,点击它就结束了用数据库中的值写入我选择的值。因此,我不得不添加的,如果(!Page.IsPostBack)

给予我提供它本来真的很难弄清楚,所以我感谢所有试图帮助的信息

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属性时,它将它们关联,并且该值是检查项目的值。

+0

对于这个例子我可以使用单选按钮,但是我有更多的行为相同的复选框方式,我不能使用单选按钮为那些想知道为什么.checked属性评估为真,即使它没有检查。而且我更改了名称也是唯一的,并且这仍然不起作用 –

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 
    } 
+0

对于本示例,我可能可以使用单选按钮,但我有更多复选框的行为方式相同,我无法使用单选按钮进行选择知道为什么。即使未检查,已检查的属性也正在评估为真。我更改了名称也是唯一的,并且这仍然不起作用 –

+0

您的代码在执行检查?在PageLoad中? –

+0

按钮点击事件 –