我有以下ModalPopupExtender,它包含一个AJAX ComboBox,RequiredFieldValidator和ValidatorCalloutExtender。在ModalPopup之外,这个完全代码可以正常工作。此外,ModalPopup中的ValidatorCalloutExtender可以处理其他控件,如TextBoxes。但是以下不起作用。可以选择值“0”(默认值),并且不显示验证器。
然而如果我取出AJAX ComboBox并放入传统的ASP.NET DropDownList,它按预期工作并显示ValidatorCalloutExtender。我使用了开发人员工具栏,无法看到ordianry中的任何内容。
我需要做什么才能使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" />
Works(如果我用传统的ASP.NET DropDownList替换上面代码中的AJAX ComboBox控件):
<asp:DropDownList ID="cbx1" runat="server" Width="300px" AppendDataBoundItems="true">
<asp:ListItem Text="(Please Select A Name)" Value="0" />
</asp:DropDownList>
答案 0 :(得分:0)
不知道这是否有帮助,我在使用必需的验证器时遇到了这个问题。
如果在此处找到解决方案: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);