2017-01-05 3 views
0

Я использую автозаполнение jquery. Следующий код, который я использую для получения данных из базы данных.asp.net текстовое поле автозаполнения, отображающее пользовательские данные

public void ProcessRequest(HttpContext context) 
{ 
    string prefixText = context.Request.QueryString("q"); 
    MySqlConnection conn = new MySqlConnection(); 
    conn.ConnectionString = ConfigurationManager.ConnectionStrings("conio").ConnectionString; 
    MySqlCommand cmd = new MySqlCommand(); 
    cmd.CommandText = ("select cityCode,city,metro,status from cities where (cityCode like @SearchText)"); 
    cmd.Parameters.AddWithValue("@SearchText", "%" + prefixText + "%"); 
    cmd.Connection = conn; 
    StringBuilder sb = new StringBuilder(); 
    conn.Open(); 
    MySqlDataReader sdr = cmd.ExecuteReader; 
    while (sdr.Read) { 
     sb.Append(sdr("cityCode")).Append(Environment.NewLine); 
    } 
    conn.Close(); 
    context.Response.Write(sb.ToString); 
} 

Этот код работает, но мне нужно добавить еще одну функциональность. Показав CityCode Я также хочу, чтобы отобразить соответствующее название города, а также f.g

PNQ (Пуна)

Здесь PNQ является код & PUNE это название города, так что я хочу, в результате внушения, чтобы показать, как это. Но когда пользователь выбирает любое значение, а затем в текстовом поле, он должен получить код, а не только имя. Может ли кто-нибудь вести меня, как я могу это сделать?

ответ

0

Нет встроенного способа сделать это. Вместо этого вы должны переопределить событие select и обновить значение ввода самостоятельно;

//You need to pass data like following from code behind: 
[{ 
    "label": "PNQ(PUNE)", 
    "value": "PNQ" 
}, { 
    "label": "PNQ1(PUNE1)", 
    "value": "PNQ1" 
}] 



[WebMethod] 
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
    public string[] GetCustomers(string prefix) 
    { 
     List<string> customers = new List<string>(); 
     using (SqlConnection conn = new SqlConnection()) 
     { 
      conn.ConnectionString = ConfigurationManager 
        .ConnectionStrings["constr"].ConnectionString; 
      using (SqlCommand cmd = new SqlCommand()) 
      { 
       cmd.CommandText = "select ContactName, CustomerId from Customers where " + 
       "ContactName like @SearchText + '%'"; 
       cmd.Parameters.AddWithValue("@SearchText", prefix); 
       cmd.Connection = conn; 
       conn.Open(); 
       using (SqlDataReader sdr = cmd.ExecuteReader()) 
       { 
        while (sdr.Read()) 
        { 
         customers.Add(string.Format("{0}-{1}", sdr["ContactName"], sdr["CustomerId"])); 
        } 
       } 
       conn.Close(); 
      } 
      return customers.ToArray(); 
     } 
    } 

$("#autocomplete").autocomplete({ 
       select: function (event, ui) { 
        //Instead of ui.item.label need to use ui.item.value 
        $(this).val(ui.item.value); 

       }, 
       source: function (request, response) { 
        $.ajax({ 
        url: '<%=ResolveUrl("~/page.aspx/GetCustomers") %>', 
        data: "{ 'prefix': '" + request.term + "'}", 
        dataType: "json", 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        success: function (data) { 
         response($.map(data.d, function (item) { 
          return { 
           label: item.split('-')[0], 
           val: item.split('-')[1] 
          } 
         })) 
        }, 
        error: function (response) { 
         alert(response.responseText); 
        }, 
        failure: function (response) { 
         alert(response.responseText); 
        } 
        }); 
       }, 
       minLength: 1 
}); 
+0

Вы хотите сказать, что нет никакого способа внести изменения в код? – SUN

+0

Я обновил ответ. Вам нужно передать данные как значение ключа из кода позади. –

+0

Мне нужно еще немного уточнить ваш ответ. С помощью вышеприведенного скрипта я не нахожу, где упоминается URL-адрес кода за файлом. Как функция вызова скрипта из кода за файлом? – SUN

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