2013-03-26 3 views
0

, поэтому я долгое время (более недели) искал google и stackoverflow и все такое. Кажется, не получается составить компиляцию информации для выполнения этой работы.JQuery Autocomplete/ASP.NET Webhandler, чтобы включить значение другого текстового поля

[ASPX PAGE]

<span>Make</span> <asp:TextBox ID="Make_SearchBox" runat="server" ToolTip="Enter Make"></asp:TextBox> 
    <span>Model</span> <asp:TextBox ID="Model_SearchBox" runat="server" ToolTip="Enter Model"></asp:TextBox> 

[JavaScript]

<%--Autocomplete Function--%> 
<script type="text/javascript"> 
    var value = ""; 
    $(document).ready(function() { 
     $("#PageContent_Make_SearchBox").autocomplete("/WebHandlers/AutoComplete.ashx",{ 
      extraParams: { field: "Make" }, 
      autoFill: false 
     }); 

     $("#PageContent_Model_SearchBox").autocomplete("/WebHandlers/AutoComplete.ashx", { 
      extraParams: { field: "Model" }, 
      autoFill: false 
     }); 
    }); 
    </script> 

[ASHX WebHandler - C#]

public void ProcessRequest(HttpContext context) 
    { 
     // INITIALIZING NEEDED VARS 
     string query = ""; 
     string sql = ""; 

     // CHECK "field" QUERY AND PASS TO SWITCH 
     string field = context.Request.QueryString["field"]; 
     if (field != null) 
     { 
      switch (field) 
      { 
       case "Make": 
        query = context.Request.QueryString["q"]; 
        sql = "Select DISTINCT Make from Vehicle Where Make LIKE '%" + query + "%'"; 
        break; 

       case "Model": 
        query = context.Request.QueryString["q"]; 
        sql = "Select DISTINCT Model from Vehicle Where Model LIKE '%" + query + "%' AND Make LIKE (((MAKE TEXTBOX VALUE))); 
        break; 
      } 
     } 

     string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["ConnString"].ConnectionString; 
     // CONNECT TO DATABASE, RUN QUERY AND RETURN DATA 
     using (SqlConnection connection = new SqlConnection(connStr)) 
     using (SqlCommand command = new SqlCommand(sql, connection)) 
     { 
      connection.Open(); 
      using (SqlDataReader reader = command.ExecuteReader()) 
      { 
       while (reader.Read()) 
       { 
        context.Response.Write(reader.GetString(0) + Environment.NewLine); 
       } 
      } 
     } 
    } 

Вышеперечисленные работы абсолютно нормально с сделать текстовое поле , Когда я типа «игрушку» в сделать поле Он проходит так:

GET http://localhost:26724/WebHandlers/AutoComplete.ashx?q=toy&field=Make 

То, что я хочу сделать это после того, как пользователь получает сделать и начинает писать в модели поле он должен искать только модели, относящиеся к этому. Сторона C# является легкой, я полагаю, просто SQL-запрос, но как я могу заставить JQuery принять значение , сделайте текстовое поле и добавьте его в строку запроса. Обратите внимание, что ему нужно захватить значение , чтобы сделать текстовое поле только после того, как оно заполнено не в $ document.ready.

Благодарим вас заблаговременно. Я обязательно отвечу на лучший ответ.

ответ

1

Виджет Autocomplete имеет select event, который срабатывает, когда пользователь выбирает элемент. Вы можете использовать это, чтобы отфильтровать второй источник автозаполнения на основе того, что пользователь выбрал в первом.

Вот простой пример: http://jsfiddle.net/B5fWc/8/ ...

$("#tags").autocomplete({ 
     source: availableTags, 
     select: function(event, ui) { 
      $("#books").autocomplete({ 
       source: filter(availableBooks, ui.item.value) 
      }); 
     } 
    }); 

Вы используете старую версию автозаполнения? Я не думаю, что extraParams существует в текущей версии.

Я не точно понимаю, как вы получаете часть q=toy, но я думаю, что такой подход мог бы сделать то, что вы хотите.

$("#PageContent_Make_SearchBox").autocomplete({ 
    source: "/WebHandlers/AutoComplete.ashx?field=Make", 
    select: function(event, ui) { 
     $("#PageContent_Model_SearchBox").autocomplete({ 
      source: "/WebHandlers/AutoComplete.ashx?field=Model&Make=" + ui.item.value 
     }); 
    } 
}); 

Затем на стороне C# вам нужно будет получить значение, которое они выбрали для Make из строки запроса «Сделать».

+0

Спасибо человеку. Я пробую ваш метод. Требуется обновление JQuery, поэтому я дам вам знать, что произойдет. – TIPS

Смежные вопросы