我想知道是否有办法使用ajax工具包autocompleteextender挂钩到多个文本框控件。
原因是我们有多个文本框控件,我不喜欢使用8个autocompleteextenders来执行相同的操作,因为所有8个都需要正确初始化等等,其中一个感觉更易于维护。
编辑:
我构造了一个初始化autocompleteexttender对象并将每个对象传递给该方法的方法,因此我需要在每个对象上单独设置的是ID和TargetElementID。至少比什么都没有好,但我仍然希望能有更好的解决方案。
答案 0 :(得分:2)
不是特定于问题的答案,但我一直使用Ajax Control工具包自动完成扩展程序,但后来我发现了Jquery一个,在我看来更好,我认为你可以很容易地做你想要的,尽管你需要将它分配给jQuery中的每个控件,但是你只需要2个函数,一个用于获取数据,另一个用于处理结果。
你做了类似的事情:
$(document).ready(function () {
$('#<%=txtSearchBox.ClientID%>').autocomplete('/Search.ashx');
$('#<%=txtSearchBox.ClientID%>').result(function (event, data, formatted) {
if (data) {
// Extract the data values
var name = data[0]; // appears in textbox
var dataval1= data[1];
var dataval2= data[2];
$("#<%=hdndataval1.ClientID%>").val(dataval1);
$("#<%=hdndataval2 .ClientID%>").val(dataval2);
}
});
});
您必须使用隐藏字段来存储ID,但它使用处理程序可以很好地自动填充。
public void ProcessRequest(HttpContext context)
{
string prefixText = context.Request.QueryString["q"];
//do your thing here and return as a bar separated list
StringBuilder sb = new StringBuilder();
foreach(Results res in results )
{
sb.Append(String.Format("{0}|{1}|{2}", +res.Val1, res.Val2, res.Val3));
sb.Append(Environment.NewLine);
}
context.Response.Write(sb.ToString());
}
JQuery是here(我认为)
必须承认我曾经发誓过那个控制工具包,但是已经介绍给Jquery我发现了很多控件我认为好多了!
我想我会向你的方向投入不同的选择!