通常,我可以使用以下内容设置TargetControlID服务器端:
AutoCompleteExtender ace = new AutoCompleteExtender();
ace.ID = "AutoCompleteExtender1";
ace.TargetControlID = "whatever";
我知道如何获取AutoCompleteExtender客户端,但我正在寻找一种方法来更新TargetControlID客户端。有什么想法吗?
答案 0 :(得分:2)
很遗憾,对于现有的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一直初始化自动完成的实例。只需确保ID已经不存在。
答案 1 :(得分:0)
显然微软并不认为这很重要,所以目前还没有办法做到这一点:)