RadioButton's CheckedChanged在刷新后消失

RadioButton's CheckedChanged disappears after refresh

本文关键字:刷新 消失 CheckedChanged RadioButton      更新时间:2023-09-26

我有一个ASP。Net页面,在运行时使用大量动态生成的控件。每个控件都绑定到一个"更改事件"。除了带有CheckedChanged事件的RadioButtons,其他的都很好。

我第一次访问这个页面一切正常。但是第二次一些RadioButtons丢失了他们的CheckedChanged事件。

第一个页面访问生成的HTML代码:

<input id="ctl00_masterContentPlaceHolder_question467b446b749c4252a4df1839ae81ee7fYesRadioButton" type="radio" name="ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fRadioButtonGroup" value="question467b446b749c4252a4df1839ae81ee7fYesRadioButton" onclick="javascript:setTimeout('__doPostBack(''ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fYesRadioButton'','''')', 0)" tabindex="1">
<input id="ctl00_masterContentPlaceHolder_question467b446b749c4252a4df1839ae81ee7fNoRadioButton" type="radio" name="ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fRadioButtonGroup" value="question467b446b749c4252a4df1839ae81ee7fNoRadioButton" onclick="javascript:setTimeout('__doPostBack(''ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fNoRadioButton'','''')', 0)">

第二次访问后(第二个RadioButton的onclick事件丢失):

<input id="ctl00_masterContentPlaceHolder_question467b446b749c4252a4df1839ae81ee7fYesRadioButton" type="radio" name="ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fRadioButtonGroup" value="question467b446b749c4252a4df1839ae81ee7fYesRadioButton" onclick="javascript:setTimeout('__doPostBack(''ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fYesRadioButton'','''')', 0)" tabindex="1">
<input id="ctl00_masterContentPlaceHolder_question467b446b749c4252a4df1839ae81ee7fNoRadioButton" type="radio" name="ctl00$masterContentPlaceHolder$question467b446b749c4252a4df1839ae81ee7fRadioButtonGroup" value="question467b446b749c4252a4df1839ae81ee7fNoRadioButton" checked="checked">

编辑

控件被添加到Page_Load事件:

System.Collections.Generic.List<CPM.Arda.Questionnaire.Base.Objects.QuestionRenderResult<System.Web.UI.Control>> questionRenderResults = _questionnaireParser.Render(questionnaireGroup, false);
            foreach (CPM.Arda.Questionnaire.Base.Objects.QuestionRenderResult<System.Web.UI.Control> questionRenderResult in questionRenderResults)
                questionnaireGroupControlsPanel.Controls.Add(questionRenderResult.QuestionControl);

Render()方法中的代码:

    System.Web.UI.WebControls.RadioButton yesRadioButton = new System.Web.UI.WebControls.RadioButton();
    yesRadioButton.ID = "question" + questionnaireGroupQuestion.Id.ToString().Replace("-", "") + "YesRadioButton";
    yesRadioButton.Text = "Ja";
    yesRadioButton.GroupName = "question" + questionnaireGroupQuestion.Id.ToString().Replace("-", "") + "RadioButtonGroup";
    yesRadioButton.TabIndex = tabIndex;
    yesRadioButton.Enabled = !_readOnly;
    yesRadioButton.AutoPostBack = true;
    yesRadioButton.CheckedChanged += inputControl_ValueChanged;
    System.Web.UI.WebControls.RadioButton noRadioButton = new System.Web.UI.WebControls.RadioButton();
    noRadioButton.ID = "question" + questionnaireGroupQuestion.Id.ToString().Replace("-", "") + "NoRadioButton";
    noRadioButton.Text = "Nein";
    noRadioButton.GroupName = "question" + questionnaireGroupQuestion.Id.ToString().Replace("-", "") + "RadioButtonGroup";
    noRadioButton.Style.Add("margin-left", "10px");
    noRadioButton.Enabled = !_readOnly;
    noRadioButton.AutoPostBack = true;
    noRadioButton.CheckedChanged += inputControl_ValueChanged;

有人能解释一下吗?

找到解决问题的方法了

似乎是一个bug在AjaxToolKit。看这个:

ASP。. NET单选按钮已检查,更改事件未触发第一个单选按钮