Asp.Net自动完成set_contextKey“对象不支持此属性或方法”

时间:2011-04-06 09:51:51

标签: jquery asp.net autocompleteextender

我在使用jquery和javascript从客户端设置上下文密钥时遇到问题。它无法找到ASP.Net的AutoCompleteExtender的函数set_contextKey。

这是我的文本框HTML和AutoCompleteExtender ...

<asp:TextBox ID="txtProduct" runat="server" AutoPostBack="true" OnTextChanged="txtProduct_TextChanged" Width="181px" /><ajaxToolkit:AutoCompleteExtender
    ID="AutoCompleteExtender_txtProduct" BehaviorID="acExt" runat="server" TargetControlID="txtProduct"
    CompletionListCssClass="autocomplete_completionListElement" CompletionListItemCssClass="autocomplete_listItem"
    CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem" MinimumPrefixLength="2"
    CompletionInterval="1000" ServicePath="~/WS/Service.svc" ServiceMethod="GetProductsByName"
    EnableCaching="true" DelimiterCharacters=";" UseContextKey="true" OnClientItemSelected="txtProduct_ClientItemSelected">
</ajaxToolkit:AutoCompleteExtender>

和更改下拉列表的jquery是:

function ddlStore_onchange() {
    $('#acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());
}

它在set_contextKey函数上抛出错误。谁能解释我在这里做错了什么......

2 个答案:

答案 0 :(得分:3)

我发现更换了这行

$('#acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());

这一行

$find('acExt').set_contextKey($('#<%= ddlStore.ClientID %>').val());

解决了这个问题。不知道为什么,有人可以帮忙吗?

答案 1 :(得分:1)

所以第一个不起作用的原因确实存在两个问题:

  1. 使用asp.net中的$find() ajax工具包扩展对象并添加方法属性,如.set_contextKey。在相同对象上使用jquery选择器将不起作用。

  2. 此外,#acExt选择器意味着客户端ID标记“acExt”。 asp.net(&lt; 4.0)将为实际的客户端ID添加一个长前缀。

  3. 如果要在jQuery中选择asp.net服务器标签,请改用属性/ endswith selector $([id$='serverID'])