我对ASP AutoCompleteExtender控件有一些问题。我在我的页面中有一个工作正常,但我在同一页面中放了另一个,我无法让它工作。使用HTTP Analyzer,当我键入与其关联的文本框时,不会触发查询。有人有想法吗?
两者都使用不同的ContextKey参数调用相同的Web服务。 web服务不能成为原因,因为它在第一种情况下工作(DevMgrTxtBox),甚至在第二种情况下都没有调用(DevTxtBox)。两个控件的属性类似,我只是更改了第二个控件的ID和targetControlID。
以下代码位于ContentPlaceHolder中。我正在使用VS2005和.NET 2.0。 AjaxControlToolkit.dll的版本为1.0.20229.0。
<小时/> 编辑:找到解决方案。 ID不是唯一需要唯一的,
BehaviorID
属性也必须是唯一的。没有记录。
<tr>
<td>
<asp:Label ID="DevtMgrLbl" runat="server" Text="Development Manager"></asp:Label>
</td>
<td>
<asp:UpdatePanel runat="server" id="devMgrPanel">
<contenttemplate>
<asp:TextBox id="DevMgrTxtBox" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender id="AutoCompleteRole1" runat="server" CompletionSetCount="5" EnableCaching="true" BehaviorID="autoCompleteExtender" CompletionInterval="100" MinimumPrefixLength="2" ServiceMethod="GetRoleList" ServicePath="AutoCompleteRoles.asmx" TargetControlID="DevMgrTxtBox" ContextKey="DM">
</ajaxToolkit:AutoCompleteExtender>
</contenttemplate>
<triggers>
<asp:AsyncPostBackTrigger ControlID="DevMgrTxtBox" EventName="TextChanged"></asp:AsyncPostBackTrigger>
</triggers>
</asp:UpdatePanel>
</td>
</tr>
<tr>
<td>
<asp:Label ID="DevLbl" runat="server" Text="Developer"></asp:Label>
</td>
<td>
<asp:UpdatePanel runat="server" id="devPanel">
<contenttemplate>
<asp:TextBox ID="DevTxtBox" runat="server"></asp:TextBox>
<ajaxToolkit:AutoCompleteExtender id="AutoCompleteRole2" runat="server" CompletionSetCount="5" EnableCaching="true" BehaviorID="autoCompleteExtender" CompletionInterval="100" MinimumPrefixLength="2" ServiceMethod="GetRoleList" ServicePath="AutoCompleteRoles.asmx" TargetControlID="DevTxtBox" ContextKey="DEV">
</ajaxToolkit:AutoCompleteExtender>
</contenttemplate>
<triggers>
<asp:AsyncPostBackTrigger ControlID="DevTxtBox" EventName="TextChanged"></asp:AsyncPostBackTrigger>
</triggers>
</asp:UpdatePanel>
</td>
</tr>