问题 如何使用脚本文件上的脚本控件捕获和分配 Ajax Toolkit 自动完成控件上的事件?
解释
我基本上创建了一个脚本控件来组合一个文本框和一个自动完成控件,这样我就可以拥有一个用于自动完成的通用控件。下一步是在搜索项目时添加诸如处理图像之类的东西。这似乎很容易。
protected override IEnumerable<ScriptDescriptor> GetScriptDescriptors()
{
ScriptControlDescriptor desc = new ScriptControlDescriptor
("NDI.WebControls.Client.GenericAutoComplete", this.ClientID);
desc.AddProperty("autoCompleteID", autoComplete.ClientID);
return new ScriptDescriptor[] { desc };
}
然后在javascript上正常:
initialize: function()
{
this._autoComplete = $get(this._autoCompleteID);
//this._autoCompleteID does have a value
this._autoCompleteClientPopulating =
Function.createDelegate(this, this.handleAutoCompleteClientPopulating);
$addHandler(this._autoComplete, "clientPopulating",
this._autoCompleteClientPopulating);
NDI.WebControls.Client.GenericAutoComplete.callBaseMethod(this, 'initialize');
},
现在这应该有效,但它没有。为什么?因为显然没有像普通控件那样呈现给页面的自动完成控件。因此,当它到达 $get 部分时,尽管 ID 属性具有文本属性,但它仍为 null。(IE控件不存在)
这是可能的还是我必须使用 OnXyz 属性服务器端来分配方法?如:
autocomplete.OnClientPoplating = someScript;