К сожалению, это невозможно для существующего экземпляра AutoCompleteExtender. Есть несколько методов, которые могут вас заинтересовать, как показано ниже
var x = $find("AutocompleteBehaviorID");//find the instance
x.get_completionListElementID();//get the ID of target textbox
x.set_completionListElementID();//set the ID of target textbox has no effect though :(
x._completionListElement();//direct access to DOM element that acts as target
проблема здесь, кажется, инициализированная версия добавляет дополнительные события к целевому текстовому полю во время фазы init
набора инструментов управления (да, на стороне клиента также есть фаза init
). Когда инициализированная версия выполняется для изменения в качестве цели (как вы хотели сделать), эти события keypress
, blur
и т. Д. Не добавляются, поэтому вы не видите никаких изменений. Но если вы знали javascript, вы можете сделать следующее, чтобы он работал с любым текстовым полем.
$create(Behavior,{properties},{events},interfaces,target);
где
Поведение
AjaxControlToolkit.AutoCompleteBehavior
свойства
- это объект javascript, как показано ниже (есть больше свойств, но их достаточно
{
"completionInterval": 1,
"completionListElementID": "empty panel id",
"completionListItemCssClass": "css class name",
"delimiterCharacters": ";",
"highlightedItemCssClass": "css class name",
"id": "CLIENTSIDEID",
"minimumPrefixLength": 1,
"serviceMethod": "WebMethodName",
"servicePath": "AbsolutePath to asmx file"
}
События
доступно больше событий
{
"itemSelected": jsFn,
"populated": jsFn
}
Цель
Целевой элемент является наиболее важным. Именно это текстовое поле привлекает все события, колокола и свистки.
$get("ELEMENT ID")
теперь, когда все кончено, вы можете инициализировать экземпляр автозавершения через javascript все время. Просто убедитесь, что идентификатор уже не существует.