Asp.Net Autocomplete set_contextKey "Объект не поддерживает это свойство или метод" - PullRequest
2 голосов
/ 06 апреля 2011

Я сталкиваюсь с проблемой при установке ключа контекста со стороны клиента с использованием jquery и javascript. Не удается найти функцию set_contextKey для AutoCompleteExtender в ASP.Net.

Вот мой 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>

и запрос на изменение выпадающего списка:

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

Выдает ошибку в функции set_contextKey. Кто-нибудь может объяснить, что я здесь делаю неправильно ...

Ответы [ 2 ]

3 голосов
/ 07 апреля 2011

Я обнаружил, что замена строки

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

с этой строкой

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

решил проблему. Не знаю почему, может кто-нибудь помочь в этом?

1 голос
/ 29 июля 2011

Итак, есть две проблемы, почему первая не сработала:

  1. Использование $find() из asp.net ajax toolkit расширяет объекты и добавляет свойства метода, такие как .set_contextKey. Использование селекторов jquery для одних и тех же объектов не будет работать.

  2. Кроме того, селектор #acExt подразумевает тег id на стороне клиента «acExt». asp.net (<4.0) добавит длинный префикс к фактическим идентификаторам на стороне клиента. </p>

Если вы хотите выбрать теги сервера asp.net в jQuery, используйте вместо этого селектор свойства / заканчивается с $([id$='serverID']).

...