Categories: JS & jQuery

Как подружить jQuery Autocomplete и ASP.NET

Решение:
Using aspx:
 
In my page I have a text box:
 
<input id="txtSearch" type="text" />
 
I am using jQuery autocomplete, set up per their example:
 
<link rel="stylesheet" href="js/jquery.autocomplete.css" type="text/css" />
<script type="text/javascript" src="js/jquery.bgiframe.js"></script>
<script type="text/javascript" src="js/jquery.dimensions.pack.js"></script>
<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
Here is where it starts to get hacky... I call a page instead of a webservice:
 
  <script type="text/javascript">
    $(document).ready(function(){
        $("#txtSearch").autocomplete('autocompletetagdata.aspx');
    });      
  </script>
 
In the page I stripped out ALL of the html and just have this (otherwise, various HTML bits show up in the autocomplete dropdown):
 
protected void Page_Load(object sender, EventArgs e)
{
    // Note the query strings passed by jquery autocomplete:
    //QueryString: {q=a&limit=150&timestamp=1227198175320}
 
    LookupTagCollection tags = Select.AllColumnsFrom<LookupTag>()
        .Top(Request.QueryString["limit"])
        .Where(LookupTag.Columns.TagDescription).Like(Request.QueryString["q"] + "%")
        .OrderAsc(LookupTag.Columns.TagDescription)
        .ExecuteAsCollection<LookupTagCollection>();
 
    StringBuilder sb = new StringBuilder();
 
    foreach (LookupTag tag in tags)
    {
        sb.Append(tag.TagDescription).Append("\n");
    }
 
    Response.Write(sb.ToString());
}
 
If you don't do a LIKE query, then it returns everything that contains a match for the character(s) you type -- e.g., typing "a" will include "Ask" and "Answer" as well as "March" and "Mega." I just wanted it to do a starts with match.
 
 
Using the ashx:
 
<script type="text/javascript">
  $(document).ready(function(){
      $("#txtSearch").autocomplete('autocompletetagdata.ashx');
  });      
</script>
 
[WebService(Namespace = "http://www.yoursite.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AutocompleteTagData : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        // Note the query strings passed by jquery autocomplete:
        //QueryString: {q=a&limit=150&timestamp=1227198175320}
 
        LookupTagCollection tags = Select.AllColumnsFrom<LookupTag>()
            .Top(context.Request.QueryString["limit"])
            .Where(LookupTag.Columns.TagDescription).Like(context.Request.QueryString["q"] + "%")
            .OrderAsc(LookupTag.Columns.TagDescription)
            .ExecuteAsCollection<LookupTagCollection>();
 
        foreach (LookupTag tag in tags)
        {
            context.Response.Write(tag.TagDescription + Environment.NewLine);
        }
    }
 
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
Статья http://stackoverflow.com/questions/305994/jquery-autocomplete-and-asp-net
Руслан Раянов

Recent Posts

Что нужно убрать?

http://falcon.web-automation.ru/ - платформа создания бизнес-приложений в виде личных кабинетов

2 дня ago

В гору или под гору

http://falcon.web-automation.ru/ - платформа создания бизнес-приложений в виде личных кабинетов

5 дней ago

Опросы клиентов – ключевой инструмент для бизнеса

http://falcon.web-automation.ru/ - платформа создания бизнес-приложений в виде личных кабинетов

7 дней ago

Вежливость – бесплатный способ увеличить показатели бизнеса

http://falcon.web-automation.ru/ - платформа создания бизнес-приложений в виде личных кабинетов

2 недели ago

Проблема дисбаланса производства и продаж в сфере услуг

В статье разберем распространенную проблему в сфере услуг: либо слишком мало продаж, либо слишком много.…

2 недели ago

Бекап не нужен, когда все хорошо

http://falcon.web-automation.ru/ - платформа создания бизнес-приложений в виде личных кабинетов

2 недели ago