ValidatorCalloutExtender для RequiredFieldValidator на AJAX ComboBox внутри UpdatePanel не отображается - PullRequest
2 голосов
/ 01 марта 2012

У меня есть следующий ModalPopupExtender, который содержит AJAX ComboBox, RequiredFieldValidator и ValidatorCalloutExtender.За пределами ModalPopup этот точный код работает.Кроме того, ValidatorCalloutExtender в ModalPopup работают с другими элементами управления, такими как TextBoxes.Однако следующее не работает.Может быть выбрано значение «0» (по умолчанию), и валидатор не отображается.

Однако если я возьму AJAX ComboBox и вставлю вместо него традиционный ASP.NET DropDownList, работает как положено и показывает ValidatorCalloutExtender.Я использовал панель инструментов разработчика и не вижу ничего из обычного.

Что нужно сделать, чтобы ValidatorCalloutExtender работал с AJAX ComboBox внутри ModalPopup?

Спасибо!

Не работает:

<asp:Panel ID="pnlData" runat="server" >
 <table>
  <tr>
    <td>
      <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
         <act:ComboBox ID="cbx1" runat="server" Width="278px" DropDownStyle="DropDownList" AutoCompleteMode="SuggestAppend" CaseSensitive="false" AppendDataBoundItems="true" ToolTip="Select the Name.">
           <asp:ListItem Text="(Please Select the Name)" Value="0" />
         </act:ComboBox>
        <asp:RequiredFieldValidator ID="cbx1Req" runat="server" ControlToValidate="cbx1"
          SetFocusOnError="true" ErrorMessage="Please Select the Name."
          InitialValue="0" Display="None" />
        <act:ValidatorCalloutExtender ID="cbx1ReqE" runat="server"
             TargetControlID="cbx1Req" PopupPosition="Right" />
       </ContentTemplate>
     <Triggers>
       <asp:AsyncPostBackTrigger ControlID="btnAdd" EventName="Click" />
      </Triggers>
    </asp:UpdatePanel>
   </td>
  </tr>
 </table>
</asp:Panel>

<act:ModalPopupExtender ID="DataMPE" runat="server"
  TargetControlID="="btnHidden"
  PopupControlID="pnlData" />

<asp:Button ID="btnHidden" runat="server" Text="Modal Display (Hidden)" style="display:none" />

Работает (если я заменю элемент управления AJAX ComboBox в приведенном выше коде традиционным ASP.NET DropDownList):

<asp:DropDownList ID="cbx1" runat="server" Width="300px" AppendDataBoundItems="true">
    <asp:ListItem Text="(Please Select A Name)" Value="0" />
</asp:DropDownList>

1 Ответ

0 голосов
/ 27 августа 2013

Не знаю, может ли это помочь, у меня возникла проблема с требуемым валидатором.

Если нашел решение здесь: http://ajaxcontroltoolkit.codeplex.com/workitem/24417

Пришлось добавить javascript для изменения controltovalidateсвойство для внутреннего текстового поля.

string script = string.Format(@"if({0}) {0}.controltovalidate = ""{1}_TextBox"";", this.reqValidator.ClientID, this.ddlCombo.ClientID);

ScriptManager.RegisterStartupScript(this, this.GetType(), string.Format("validator trick for {0}", this.ClientID), script, true); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...