2017-01-05 1 views
0

jqueryオートコンプリートを使用しています。私はデータベースからデータを取得するために使用しているコードに続いて。asp.net textboxオートコンプリートでカスタムデータを表示

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); 
} 

このコードは機能していますが、もう1つの機能を追加する必要があります。ここで私はまた、それぞれの都市名を表示したいcityCode同様f.g

PNQ(PUNE)

を示すことによってPNQは&プネーので、私はこのように表示するように提案した結果にしたい都市の名前であるコードです。しかし、ユーザーが任意の値を選択してテキストボックスに入れると、名前ではなくコードのみが得られるはずです。どのように私はこれを行うことができます誰も私を導くことができる?

答えて

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

関連する問題