2014-02-18 4 views
0

Ребята У меня есть comboBox, который настроен для работы как dropdownlist. Он заполняется через базу данных. Он работает безупречно.Поиск в combobox?

Теперь, что я хочу сделать, так это: Например, у меня есть comboBox, который получает столбец «Имена» из таблицы базы данных «tblPersons» и отображает его. , если, например, существует всего 4 записей в таблицы базы данных «tblPersons»

  1. Али Хан
  2. Ахмед Хан
  3. Билал Хан
  4. Билал Фаруки

Так что, когда я напишите «Ahmed Farooqi» в comboBox (comboBox должен быть доступен для редактирования, и он должен отображать все записи с именем «Ahmed», как только я написал «Ahmed»), и нажмите enter, он должен искать в таблице базы данных «tblPersons» - если «Ахмед Фар ooqi "- он должен выбрать его, если« Ahmed Farooqi »не найден - он должен спросить, хочу ли я создать новую запись в таблице базы данных« tblPersons », если я нажму« да », она должна открыть другую форму для добавления новых и если я нажму «Нет», он ничего не должен делать.

Как это сделать. Я новичок в C#, поэтому любая помощь будет принята с благодарностью. Прошу прощения, если мой вопрос неясен.

С уважением.

Редактировать: Это моя тестовая форма, здесь я текстовое поле, которое будет использоваться для ввода имени, текстовое поле должно искать имя в базе данных, затем, если имя найдено, отображать номер и электронную почту из базы данных в соответствующих текстовых окнах , Если он не найден, он должен отображать сообщение с запросом пользователя на создание нового человека, и при нажатии «да» переключитесь на другую форму (где пользователь создаст нового человека).

enter image description here

+0

Что вы сделали до сих пор? Ищите свойства автозаполнения и ключевые события, события нажатия клавиш – ARH

+1

Пожалуйста, не включайте информацию о языке, используемом в заголовке вопроса, если это не будет иметь смысла без него. Теги служат для этой цели. Кроме того, не включайте тег IDE (Visual Studio) из тегов, если ваш вопрос напрямую не связан с ним, и вы просто пишете в нем код. Проблемы с кодом редко связаны с редактором кода. –

+0

Мне очень жаль, что это не повторится. –

ответ

0

вызов функции fillCombo в вашей форме нагрузки и назначить событие cmb_SelectedValueChanged вашему ComboBox. Не забудьте установить свойство autocompletemode в combobox.

cmb.AutoCompleteMode = AutoCompleteMode.SuggestAppend 


private void fillCombo() 
{ 
    string sql = "SELECT ID, NAME, Number, Email FROM tblPerson"; 
    SqlConnection Cnn = new SqlConnection("connections string"); 
    Cnn.Open(); 

    SqlDataAdapter da = new SqlDataAdapter(sql, Cnn); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 

    cmb.ValueMember = "ID"; 
    cmb.DisplayMember = "Name"; 
    cmb.DataSource = dt;  
} 

private void cmb_SelectedValueChanged(object sender, EventArgs e) 
{ 
    if (cmb.SelectedItem != null) 
    { 
     txtNumber.Text = ((DataRow)cmb.SelectedItem)["Number"].ToString(); 
     txtEmail.Text = ((DataRow)cmb.SelectedItem)["Email"].ToString(); 
    } 
} 

private void cmb_Validating(object sender, CancelEventArgs e) 
{ 
    if (cmb.SelectedItem == null) 
    { 
     If (MessageBox.Show("Do you want to create a new person?", MessageBoxButtons.YesNo) == DialogResult.Yes) 
     { 
      frmNewPerson person = new frmNewPerson(); 
      person.Name = cmb.Text; 
      if (person.ShowDialog() == DialogResult.Yes) 
      { 
       fillCombo(); 
       DataRow dr = ((DataTable)cmb.DataSource).Select("Name='" + person.Name + "'")[0]; 
       cmb.SelectedValue = Convert.ToInt32(dr["ID"]); 
      } 
     } 
     else 
     { 
      txtNumber.Text = string.Emtpy; 
      txtEmail.Text = string.Emtpy; 
     } 
    } 
} 
+0

Благодарим вас за ответ. Я попробовал ваш метод. Но всякий раз, когда я пытаюсь запустить ваш код, он просто выдает сообщение: «Вы хотите создать нового человека?» даже не отображая форму. Почему это? –

+0

Извините. Но визуальная студия не установлена ​​на моем компьютере, поэтому я написал этот код n ++. Поэтому, пожалуйста, возьмите мой код только как логику. у него могут быть некоторые ошибки. Я обновил свой код. в этом обновлении я создал другое событие cmb_Validating. назначьте это событие в поле со списком. – Shell

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