Bootstrap Typeahead в веб-формах asp.net

Я ищу хороший пример того, как я могу реализовать Bootstrap Typeahead с приложением asp.net Webforms.

Приложение уже использует тему Bootstrap и различные плагины. Теперь я хочу, чтобы пользователь мог выполнять поиск по набору данных, введя минимум три буквы. Как только пользователь введет три буквы, запустится сценарий, который начнет поиск значений, соответствующих введенному слову, с помощью веб-метода, а затем доставит результаты пользователю.

Из примеров, которые я видел до сих пор в сети, у меня есть это:

 [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
        public List<string> GetNames(string term)
        {
            // A list of names to mimic results from a database
            List<string> nameList = new List<string>
            {
                "Jonathan", "Lisa", "Jordan", "Tyler", "Susan", "Brandon", "Clayton", "Elizabeth", "Jennifer"
            };

            var results = nameList.Where(n =>
                n.StartsWith(term, StringComparison.OrdinalIgnoreCase));           
            return new JsonResult()
            {                
                Data = results.ToArray(),
                JsonRequestBehavior = JsonRequestBehavior.AllowGet
            };
        }

В фрагменте кода выше JsonResult() и JsonRequestBehavior не распознаются, и я получаю ошибки. Затем на стороне клиента у меня есть это:

<input type="text" id="txtSearch"  data-provide="typeahead" runat="server" />

Тогда скрипт у меня такой (тоже нашел в сети):

<script type="text/javascript">
       $(document).ready(function () {              
           $('#<%= txtSearch.ClientID %>').typeahead({
               source: function (query, process) {                                       
               },
               updater: function (item) {
                   // implementation
               },
               matcher: function (item) {
                   if (item.toLowerCase().indexOf(this.query.trim().toLowerCase()) != -1) {
                       return true;
                   }
               },
               sorter: function (items) {
                   return items.sort();
               },
               highlighter: function (item) {
                   var regex = new RegExp( '(' + this.query + ')', 'gi' );
                   return item.replace( regex, "<strong>$1</strong>" );
               },
           });
       });    
</script>

person Laziale    schedule 11.06.2013    source источник


Ответы (2)


попробуй это

<input type="text" id="txtSearch"  data-provide="typeahead" runat="server" />

//No javascript only add bootstrap.js or typeahead js and css

        protected void Page_Load(object sender, EventArgs e)
    {
        List<string> nameList = new List<string>
        {
            "Jonathan", "Lisa", "Jordan", "Tyler", "Susan", "Brandon", "Clayton", "Elizabeth", "Jennifer"
        };
        string str = "";
        for (int i = 0; i < nameList.Count; i++)
        {
            str = str + '"' + nameList[i].ToString() + '"' + ',';
        }
        if (str != "")
        {
            str = str.Remove(str.Length - 1);
        }
        str = "[" + str + "]";
        txtSearch.Attributes.Add("data-source", str);

    }
person sangram parmar    schedule 12.06.2013

Вы можете попробовать это:

Текстовое окно:

<asp:TextBox ID="txtBuscar" runat="server" CssClass="span3" placeholder="Text..." data-provide="typeahead" autocomplete="off" data-items="4"></asp:TextBox>

data-items = список n элементов

Код позади:

string asdf = "[\"Francisco\", \"Maria\", \"Fernando\", \"Alejandra\"]";
txtBuscar.Attributes.Add("data-source", asdf);
person user3334463    schedule 17.04.2014