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

发布于 2024-10-30 17:04:36 字数 1137 浏览 5 评论 0原文

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

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

<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 函数上引发错误。谁能解释一下我在这里做错了什么......

I am facing a problem while setting the context key from the client side using jquery and javascript. It is unable to find the function set_contextKey of AutoCompleteExtender of ASP.Net.

Here is my HTML for textbox and 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>

and the jquery on change of a dropdownlist is:

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

It is throwing the error on set_contextKey function. Can anybody explain what I am doing wrong here...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

丶情人眼里出诗心の 2024-11-06 17:04:36

我发现将行

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

替换为此行

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

解决了该问题。不知道具体原因,有人可以帮忙吗?

I found out that replacing the line

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

with this line

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

resolved the issue. Don't know why exactly, can anybody help on this ?

感性 2024-11-06 17:04:36

因此,第一个不起作用的原因实际上有两个问题:

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

  2. 此外,#acExt 选择器暗示客户端 ID 标记“acExt”。 asp.net (< 4.0) 将为实际客户端 ID 添加长前缀。

如果要在 jQuery 中选择 asp.net 服务器标记,请使用 property/endswith 选择器 $([id$='serverID']) 代替。

So there are really 2 problems for why the first didn't work:

  1. Using $find() from asp.net ajax toolkit extends objects and adds method properties like .set_contextKey. Using jquery selectors on the same objects will not work.

  2. In addition, the #acExt selector implies client-side id tag "acExt". asp.net (< 4.0) will add a long prefix to the actual client side IDs.

If you want to select asp.net server tags in jQuery, use the property/endswith selector $([id$='serverID']) instead.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文