C # заполнение поля со списком из 2 столбцов - PullRequest
0 голосов
/ 03 апреля 2012

В настоящее время я заполняю комбинированный список значением из одного столбца из базы данных Access, для которой я хочу получить соответствующее значение первичного ключа для использования позже в моей программе.

Например: два столбца в таблице, такие как идентификатор (PK) и заголовок

Заполнение поля со списком Заголовок, как я могу получить соответствующее значение идентификатора?

Моя единственная мысль - создать и запустить другой запрос, чтобы получить идентификатор, которому соответствует значение другого столбца, но это просто неэффективный способ сделать это.

Исходя из моего понимания и прочтения, это не легко возможно, но любые предложения о том, как я могу преодолеть это, будут с благодарностью приняты!

Что я до сих пор использую с помощью winforms

      private void populateBox()
    {
        oleDbConnectionDARS.Open();
        dr = oleDbCommandTitle.ExecuteReader();
        comboBoxTitle.Items.Clear();

        while (dr.Read())
        {
            comboBoxTitle.Items.Add(dr["Title"]);
        }
        dr.Close();
        oleDbConnectionDARS.Close();
    }



   **SELECT        titleID, Title
   FROM            tbl_Book**

Ответы [ 2 ]

2 голосов
/ 03 апреля 2012

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

Вам следует взглянуть на использование DataBinding - Пример для привязки Windows Forms ComboBox

Если вместо этого вы хотите продолжить использовать текущий метод, то вы можете использовать свойство Tag в ComboBoxItem для хранения данных, которые вы хотите использовать.

например:

while (dr.Read())
{
   comboBoxTitle.Items.Add(new ComboBoxItem() { Name = dr["Title"], Tag = dr["titleID"]});
}

Чтобы получить доступ к значению позже, просто посмотрите на свойство Tag .

0 голосов
/ 03 апреля 2012

Вы должны установить два свойства ComboBox. DisplayMember должен быть отображаемым значением, которое вы покажете пользователю. ValueMember должен быть значением идентификатора в вашей базе данных.

Это работает для класса System.Windows.Forms.ComboBox

...