ASP AutoCompleteExtender コントロールに問題があります。自分のページで正常に動作しているページを 1 つ取得しましたが、同じページに別のページを配置しましたが、動作させることができません。HTTP アナライザーを使用すると、関連付けられたテキスト ボックスに入力してもクエリが起動されません。誰かアイデアはありますか?
どちらも、異なる ContextKey パラメーターを使用して同じ Web サービスを呼び出します。Web サービスは最初のケース (DevMgrTxtBox) で機能し、2 番目のケース (DevTxtBox) では呼び出されないため、原因であるとは言えません。両方のコントロールのプロパティは似ています。2 番目の ID と targetControlID を変更しただけです。
以下のコードは ContentPlaceHolder にあります。.NET 2.0 で VS2005 を使用しています。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>