Подтвердите, что расширитель кнопки в пользовательском элементе управления не работает, как только включено, установлено значение false, даже после того, как было установлено значение true

#javascript #c# #asp.net

Вопрос:

У меня есть пользовательский элемент управления, который содержит расширитель кнопки подтверждения и расширитель модального всплывающего окна. Это выглядит так:

 <asp:Panel ID="panelConfirmBox" runat="server" Style="display:none;">

<asp:Button ID="btnConfirmSelection" runat="server" CssClass="hidden"/>
<asp:Button ID="btnNo" runat="server" Text="No" />
<asp:Button ID="btnYes" runat="server" Text="Yes" />
              
<asp:ModalPopupExtender Id="popupConfirmBox" runat="server" PopupControlID="panelConfirmBox"  CancelControlID="btnNo" OkControlId="btnYes"  />
<asp:ConfirmButtonExtender ID="btnConfirm" runat="server" DisplayModalPopupID="popupConfirmBox"/> 

</asp:Panel>
 

Пользовательский элемент управления получает раскрывающийся список. При изменении выбора выпадающего списка должно запускаться событие onclick кнопки. В пользовательском элементе управления aspx.cs есть следующий код:

 public string TargetControlId { set { popupConfirmBox.TargetControlID = btnConfirm.TargetControlID = btnConfirmSelection.ID; } }
public DropDownList DDL { get; set; }
public EventHandler OnClick { set { btnConfirmSelection.Click  = value; } }
public bool Enabled { set { btnConfirm.Enabled = value; } get { return btnConfirm.Enabled; } }


protected void Page_Load(object sender, EventArgs e)
{            
       if (DDL != null)
       {
               string script = "$('#"   DDL.ClientID   "').on('change', function () { $('#"   btnConfirmSelection.ClientID   "').click();}); ";
               ScriptManager.RegisterStartupScript(Page, Page.GetType(), "CallChange"   ID, script, true);                 
       }
}
 

Использование пользовательского элемента управления в aspx выглядит следующим образом:

 <asp:DropDownList ID="ddl" runat="server" AutoPostBack="false"  />
<aa:DDLConfirmPopup runat="server" ID="ConfirmPopupSelectionChange" Title="aaa" Message="bbb" TargetControlId=""/>
 

и в aspx.cs:

 ConfirmPopupSelectionChange.DDL = ddl;
ConfirmPopupSelectionChange.OnClick = new EventHandler(func);

protected void func(object sender, EventArgs e)
{
}
 

У меня есть несколько экземпляров пользовательского элемента управления, большинство из них работают нормально, за исключением одного. Как только я установлю свойство Enabled=»false», даже если я верну ему значение true, оно снова не отобразит всплывающее окно, а напрямую перейдет к функции onClick.
Это функция, которая изменила свойство enabled:

 private void manageConfirmPopup()
{
    if (---)
       ConfirmPopup.Enabled = true;
    else
       ConfirmPopup.Enabled = false;
}
 

Я вижу, что свойство enable изменяется правильно, но даже после того, как оно было установлено в значение true, подтверждение не работает.

Что не так с моим кодом?

Спасибо!