2015-05-05 46 views
1

我有了这个代码,以防止两个相反的无线电buttoms来自被检查:为什么此事件异步启动?

RadioButton rbUSCitizenOrPermResY = null; 
RadioButton rbUSCitizenOrPermResN = null; 

. . . 

rbUSCitizenOrPermResY = new RadioButton 
{ 
    CssClass = "finaff-webform-field-input" 
}; // doesn't allow assignment to CheckedChanged above 
rbUSCitizenOrPermResY.CheckedChanged += new EventHandler(rbUSCitizenOrPermResY_Changed); 

. . . 

private void rbUSCitizenOrPermResY_Changed(object sender, EventArgs e) 
{ 
    if (rbUSCitizenOrPermResN.Checked) 
    { 
     rbUSCitizenOrPermResN.Checked = false; 
    } 
} 

所以,如果“是”单选按钮被选中,它取消选中“否”单选按钮,如果“NO “单选按钮被选中。

据说。

实际上,此事件处理程序已输入,但未单击单选按钮时。相反,稍后点击“保存”按钮后会触发。这是一个异步事件处理程序,只要感觉它就会醒来?如果是这样,我怎样才能让它“挺起来,飞向右”/“塑造或运出”?

+0

你可以去这迫使他们是将它们放在同一组框或面板内相互排斥? – DWright

+0

我不知道这样的结构在HTML(这段代码创建HTML“幕后” - 它是否存在? –

+1

所以,我想这是怎么回事是只有当你点击保存是数据发布到服务器,所以只有这样才能处理CheckChanged事件,下面是第一句:“Checked属性的值在服务器之间发生变化时发生”,在https:// msdn上的CheckChanged事件描述中发生。 microsoft.com/en-us/library/system.web.ui.webcontrols.checkbox.checkedchanged%28v=vs.110%29.aspx。因此,如果没有任何信息发布到服务器,当你点击一个Radiobutton时,没有任何反应。但是,当你点击保存,服务器检查状态,这是否有意义? – DWright

回答

1

我花了一段时间才弄清楚你在描述什么,因为我习惯于考虑客户端这个东西,而不是服务器端。但是由于你在做服务器端,我认为你需要为你的单选按钮引入某种分组结构。我刚刚尝试了一个示例应用程序,其中我使用了一个包含ListItems的RadioButtonList(而不是直觉,它们不叫做Radiobuttons)。但是使用RadioButtonList对它们进行分组,它们在客户端的行为是正确的,即它们是独占的。点击一个选择另一个。下面是我用的标记(这并不适合您的方案?):

<asp:RadioButtonList ID="RadioButtonList1" runat="server"> 
    <asp:listItem ID="rad1" runat="server"></asp:listItem> 
    <asp:listItem ID="rad2" runat="server"></asp:listItem> 
</asp:RadioButtonList> 

的ListItem控件得到了在设计文件转换为System.Web.UI.WebControls.ListItem

顺便说一句,我嘲笑这件事作为一个Web窗体应用程序视觉工作室。我没有安装任何Sharepoint的东西,但我认为原理是相同的(我希望)。

生成的HTML最终看起来像这样:

<table id="MainContent_RadioButtonList1"> 
    <tr> 
     <td><span ID="rad1"><input id="MainContent_RadioButtonList1_0" type="radio" name="ctl00$MainContent$RadioButtonList1" value="" /></span></td> 
    </tr> 
    <tr> 
     <td><span ID="rad2"><input id="MainContent_RadioButtonList1_1" type="radio" name="ctl00$MainContent$RadioButtonList1" value="" /></span></td> 
    </tr> 
</table> 
+1

我刚刚添加了生成的HTML,以便您可以看到控件在客户端输入'radio',甚至尽管他们在服务器端有类型listItem。 – DWright