【问题标题】:ValidatorCalloutExtender for a RequiredFieldValidator on a AJAX ComboBox Inside An UpdatePanel Is Not DisplayingUpdatePanel 内 AJAX 组合框中的 RequiredFieldValidator 的 ValidatorCalloutExtender 未显示
【发布时间】:2012-03-01 03:30:09
【问题描述】:

我有以下 ModalPopupExtender,其中包含 AJAX 组合框、RequiredFieldValidator 和 ValidatorCalloutExtender。在 ModalPopup 之外,这个 exact 代码可以工作。此外,ModalPopup 中的 ValidatorCalloutExtender 可用于其他控件,如 TextBoxes。但是以下不起作用。可以选择值“0”(默认),验证器不显示。

但是如果我取出 AJAX ComboBox 并改为放入传统的 ASP.NET DropDownList,它会按预期工作并显示 ValidatorCalloutExtender。我已经使用了开发人员工具栏,但看不到任何不寻常的东西。

我需要做什么才能使 ValidatorCalloutExtender 与 ModalPopup 内的 AJAX ComboBox 一起工作?

谢谢!

不工作:

<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>

【问题讨论】:

    标签: asp.net combobox ajaxcontroltoolkit modalpopupextender


    【解决方案1】:

    不知道这是否有帮助,我在需要验证器时遇到了这个问题。

    如果在这里找到解决方案: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); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多