Ajax Toolkit AutoCompleteExtender

时间:2011-10-17 08:00:13

标签: c# asp.net ajaxcontroltoolkit

我想知道是否有办法使用ajax工具包autocompleteextender挂钩到多个文本框控件。

原因是我们有多个文本框控件,我不喜欢使用8个autocompleteextenders来执行相同的操作,因为所有8个都需要正确初始化等等,其中一个感觉更易于维护。

编辑:

我构造了一个初始化autocompleteexttender对象并将每个对象传递给该方法的方法,因此我需要在每个对象上单独设置的是ID和TargetElementID。至少比什么都没有好,但我仍然希望能有更好的解决方案。

1 个答案:

答案 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我发现了很多控件我认为好多了!

我想我会向你的方向投入不同的选择!