Javascript для запуска события при нажатии клавиши в поле со списком Ajax Toolkit - PullRequest
0 голосов
/ 16 сентября 2009

У меня есть следующий выпадающий список, который использует Ajax Toolkit для создания поля со списком

<cc1:ComboBox ID="txtDrug" runat="server" style="font-size:8pt; width:267px;" 
                                                Font-Size="8pt" DropDownStyle="DropDownList" 
                                                AutoCompleteMode="SuggestAppend" AutoPostBack="True" 
                                                ontextchanged="txtDrug_TextChanged" />

Теперь мне нужно загрузить около 7000 записей, что занимает много времени и влияет на время отклика, когда страница публикуется взад и вперед.

Код, который загружает эти записи, выглядит следующим образом:

                dtDrugs = wsHelper.spGetAllDrugs();

                txtDrug.DataValueField = "pkDrugsID";
                txtDrug.DataTextField = "drugName";
                txtDrug.DataSource = dtDrugs;
                txtDrug.DataBind();

Однако, если бы я мог вызвать событие, когда печатается буква, вместо того, чтобы загружать 7000 записей, оно уменьшилось бы до менее чем 50 в большинстве случаев.

Я думаю, что это можно сделать в Javascript. Таким образом, вопрос в том, как заставить событие запускаться таким образом, чтобы при запуске формы в выпадающем списке ничего не было, но как только нажата клавиша, она ищет записи, начинающиеся с этой буквы.

.Нет сторона вещей, в которых я уверен - это Javascript, которым я не являюсь.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 12 января 2011

Я не думаю, что расширитель автозаполнения применяется, потому что он только для TextBox, а не ComboBox. Полагаю, Пол должен иметь возможность получить идентификатор выбранного элемента, чего не может предоставить TextBox.

0 голосов
/ 16 сентября 2009

Я думаю, что вы ищете Расширитель автозаполнения , прикрепленный к TextBox, вам нужно установить следующие свойства, чтобы предоставить источник данных для расширителя:

ServiceMethod="GetCompletionList"
ServicePath="AutoComplete.asmx"

Где AutoComplete.asmx - это ссылка на вашу службу, а GetCompletionList - это метод вызова вашей службы, подпись этого метода должна соответствовать следующему:

[System.Web.Services.WebMethod]
[System.Web.Script.Services.ScriptMethod]
public string[]
GetCompletionList(string prefixText, int count) 
{ ... }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...