2016-10-27 3 views
0

Добрый день всем.C# autocomplete to textbox from sql

Мой вопрос заключается в том, как автоматически заполнить другое текстовое поле на основе конкретных данных, введенных в другое. Чтобы объяснить далее, мое первое текстовое поле автоматически завершается из таблицы sql с именем «code». кроме этого столбца называется «описание». На основании данных, которые заполняются из столбца кода, как я могу автоматически заполнить второе текстовое поле на основе значения, выбранного в первом текстовом поле? Я действительно надеюсь, что это имеет смысл.

Это код, у меня есть, который обновляет textBox1, это работает отлично:

private void liguaneaRxToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     this.liguanea_LaneTableAdapter1.Fill(this.pharmaciesDataSet1.Liguanea_Lane); 
     try 
     { 

      string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True"; 
      SqlConnection con = new SqlConnection(connectionString); 
      con.Open(); 
      string query = "SELECT Code FROM dbo.Liguanea_Lane"; 
      SqlCommand cmd = new SqlCommand(query, con); 

      SqlDataReader dr = cmd.ExecuteReader(); 
      AutoCompleteStringCollection mycollection = new AutoCompleteStringCollection(); 
      while (dr.Read()) 
      { 

       mycollection.Add(dr.GetString(0)); 

      textBox1.AutoCompleteCustomSource = mycollection; 
      con.Close(); 
     } 
     catch (Exception ex) 
     { 

      MessageBox.Show(ex.ToString()); 
     } 
    } 

Теперь это код для TextBox2, который я хочу, чтобы заполнить значения на основе значения, выбранного из текстового поля 1.So, например. В запросе, где я бы написал: «SELECT description FROM dbo.Liguanea_Lane, где code =« любое значение ». Где« любое значение »- это то, что будет вводить данные из текстового поля 1, а затем возвращать (заполнять) описание, прикрепленное в текстовом поле2

private void displayValIntoTextbox(string val) //this function will auto complete the other textbox 
    { 

     if (val == null) //this will check if the value is null 
     { 
      MessageBox.Show("please enter a the correct code"); 
     } 
     else 
     { 
      try 
      { 
       string connectionString = "Data Source=LPMSW09000012JD\\SQLEXPRESS;Initial Catalog=Pharmacies;Integrated Security=True"; 
       SqlConnection con = new SqlConnection(connectionString); 
       con.Open(); 
       string query = "SELECT description FROM dbo.Liguanea_Lane where code= '"+val +"'"; // this query 
       SqlCommand cmd = new SqlCommand(query, con); 

       SqlDataReader dr = cmd.ExecuteReader(); 
       AutoCompleteStringCollection mycollection = new AutoCompleteStringCollection(); 
       if (dr.HasRows) // check if any info exist in database base off the query 
       { 
        while (dr.Read()) 
        { 

         mycollection.Add(dr.GetString(0)); 

        } 
        textBox1.AutoCompleteCustomSource = mycollection; 
       } 
       else 
       { 
        MessageBox.Show(val); 
       } 

       con.Close(); 
      } 
      catch (SqlException sql) 
      { 
       MessageBox.Show(sql.ToString()); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.ToString()); 
      } 
     } 
    } 

Я надеюсь, что все следующим образом. О, это также приложение Winform

+1

Если displayValIntoTextbox (строка Val) для 2-го текстового поля, т.е. TextBox2 тогда, эта функция должна иметь textBox2.AutoCompleteCustomSource = MyCollection; –

+0

Даже при этом проблема до сих пор не решена. Ничего не происходит –

+0

Надеюсь, вы вызываете displayValIntoTextbox (string val) из текстового измененного события textbox1. –

ответ

0

Попробуйте this-

Для автозаполнения текстового поля из БД создать элемент управления текстового поля с идентификатором 'txtAutoComplete'

<asp:TextBox ID="txtSearch" runat="server" /> 
<asp:HiddenField ID="hfCustomerId" runat="server" /> 

затем добавить JQuery плагин для AJAX

<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.10.0.min.js" type="text/javascript"></script> 

<script src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/jquery-ui.min.js" type="text/javascript"></script> 

Добавить АЯКС скрипт для автозаполнения

$(function() { 
    $("[id$=txtSearch]").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: '<%=ResolveUrl("~/Default.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); 
       } 
      }); 
     }, 
     select: function (e, i) { 
      $("[id$=hfCustomerId]").val(i.item.val); 
     }, 
     minLength: 1 
    }); 
}); 

в методе/GetCustomers Default.aspx, написать код C# получить список имен из базы данных.

для CSS добавить эту ссылку таблицы стилей

<link href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.9.2/themes/blitzer/jquery-ui.css" 
rel="Stylesheet" type="text/css" />