2016-09-10 2 views
-2

Я хочу взять имя и фамилию пользователей из таблицы «EMPLOYE» (SQL DB) и сохранить их в выпадающем списке. Я хочу сохранить идентификатор каждого пользователя в значении combobox. это мой код =>Сохраните текст и значение в combobox из таблицы базы данных

 public void fill_combobox_users() 
    { 
     // auto-complete 
     comboBox3.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     comboBox3.AutoCompleteSource = AutoCompleteSource.ListItems; 

     da = new SqlDataAdapter("select ID_EMP, concat(NOM_EMP,' ',PRENOM_EMP) as 'nom_prenom' from EMPLOYE", cn); 
     DataTable dt = new DataTable(); 
     try 
     { 
      cn.Open(); 
      da.Fill(dt); 
      comboBox3.DataSource = dt; 
      comboBox3.DisplayMember = "nom_prenom"; 
      comboBox3.ValueMember = "ID_EMP"; 
     } 

     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

     finally 
     { 
      cn.Close(); 
     } 

    } 

Полное имя отображается без проблем, но значения не !! Проблема в том, что combobox3.ValueMember принимает строку «ID_EMP», а не значение из таблицы EMPLOYE!

ЛЮБЫЕ РЕШЕНИЯ ПОЖАЛУЙСТА?

+2

См. Свойство 'SelectedValue'. –

+0

Вы используете WPF? –

+0

Нет, я не @UmairFarooq .. Я использую простые winforms (VS 2015) –

ответ

1

Отредактируйте свой запрос sql следующим образом. Должно работать

public void fill_combobox_users() 
     { 
      // auto-complete 
      comboBox3.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
      comboBox3.AutoCompleteSource = AutoCompleteSource.ListItems; 

      da = new SqlDataAdapter("select ID_EMP,(NOM_EMP+ ' ' + PRENOM_EMP) AS NOMM from EMPLOYE", cn); 
      DataTable dt = new DataTable(); 
      try 
      { 
       cn.Open(); 
       da.Fill(dt); 
       comboBox3.DataSource = dt; 
       comboBox3.DisplayMember = "NOMM"; 
       comboBox3.ValueMember = "ID_EMP"; 
      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 
      } 

      finally 
      { 
       cn.Close(); 
      } 

     } 
+0

Большое спасибо Но как я могу получить значение из выпадающего списка .. Я попробовал этот код для проверки: личное недействительным comboBox3_SelectedIndexChanged (объект отправителя, EventArgs е) { MessageBox.Show (comboBox3.ValueMember.ToString()); } Но сообщение не доступно! без каких-либо значений –

+0

Используйте comboBox3.SelectedValue.ToString(); –

+0

Спасибо .. проблема решена :) –

1

Чтобы получить значение попробовать

MessageBox.Show(comboBox3.SelectedValue.ToString()) 
+0

Я пробовал MessageBox.Show (combobox3.SelectedValue.toString()); для каждого выбранного элемента появляется System.Data.DataRowView! –

+0

Попытайтесь изменить порядок привязки combobox и присвоить DataSource в конце. Это в следующем порядке: comboBox3.DisplayMember = "nom_prenom"; comboBox3.ValueMember = "ID_EMP"; comboBox3.DataSource = dt; – Mohammad

+0

НЕТ НЕТ НЕТ Я сожалею .. мой код был неправильным! Я написал combobox1 вместо combobox3 Теперь он отлично работает .. спасибо Bro :) –

0

Имя столбца является проблемой, которую вы хотите использовать индекс столбца смотрите здесь.

public void fill_combobox_users() 
    { 
     // auto-complete 
     comboBox3.AutoCompleteMode = AutoCompleteMode.SuggestAppend; 
     comboBox3.AutoCompleteSource = AutoCompleteSource.ListItems; 

     da = new SqlDataAdapter("select ID_EMP,(NOM_EMP+ ' ' + PRENOM_EMP) AS NOMM from EMPLOYE", cn); 
     DataTable dt = new DataTable(); 
     try 
     { 
      cn.Open(); 
      da.Fill(dt); 
      comboBox3.DataSource = dt; 
      comboBox3.DisplayMember = dt.Columns[1].ColumnName; 
      comboBox3.ValueMember = dt.Columns[0].ColumnName; 
     } 

     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
     } 

     finally 
     { 
      cn.Close(); 
     } 

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