Добрый день всем.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
Если displayValIntoTextbox (строка Val) для 2-го текстового поля, т.е. TextBox2 тогда, эта функция должна иметь textBox2.AutoCompleteCustomSource = MyCollection; –
Даже при этом проблема до сих пор не решена. Ничего не происходит –
Надеюсь, вы вызываете displayValIntoTextbox (string val) из текстового измененного события textbox1. –