Подтвердить что ты не робот

Как установить выбранное значение из Combobox?

Я использую combobox в форме С# windows. Я связал список элементов, как показано ниже:

var employmentStatus = new BindingList<KeyValuePair<string, string>>();

employmentStatus.Add(new KeyValuePair<string, string>("0", "[Select Status]"));
employmentStatus.Add(new KeyValuePair<string, string>("1", "Contract"));
employmentStatus.Add(new KeyValuePair<string, string>("2", "Part Time"));
employmentStatus.Add(new KeyValuePair<string, string>("3", "Permanent"));
employmentStatus.Add(new KeyValuePair<string, string>("4", "Probation"));

employmentStatus.Add(new KeyValuePair<string, string>("5", "Other"));
cmbEmployeeStatus.DataSource = employmentStatus;
cmbEmployeeStatus.ValueMember = "Key";
cmbEmployeeStatus.DisplayMember = "Value";
cmbEmployeeStatus.SelectedIndex = 0;

Я сохраняю выбранное значение в базе данных, например, 1 или 2. Теперь я хочу установить выбранное значение из элемента базы данных, например:

cmbEmployeeStatus.SelectedValue =employee.employmentstatus;     

Но combobox не выбран со значением. Как я могу это сделать?

4b9b3361

Ответ 1

Попробуйте это.

cmbEmployeeStatus.SelectedIndex = cmbEmployeeStatus.FindString(employee.employmentstatus);

Надеюсь, что это поможет.:)

Ответ 2

Чтобы создать стиль базы данных ComboBox вручную, чтобы установить связь между числом (внутренним) и некоторым текстом (видимым), я обнаружил, что вам нужно:

  • Сохраняйте элементы в списке (вы близки - кроме строки, строки - требуется int, строка)
  • Свойство DataSource в список (вы хорошо)
  • DataMember, DataValue (вы хороши)
  • Загрузить значение по умолчанию (вы хорошо)
  • Вставьте значение из базы данных (ваш вопрос)
  • Получить значение для возврата в базу данных (ваш следующий вопрос)

Прежде всего. Измените свой KeyValuePair так, чтобы он выглядел так:

(0, "Выбор" ) (1, "Вариант 1" )

Теперь, когда вы запустите свой sql "Выберите empstatus от сотрудников, где blah" и верните целое число, вам нужно установить combobox, не тратя пустую трату времени.

Просто: *** SelectedVALUE - не элемент ****

cmbEmployeeStatus.SelectedValue = 3;   //or

cmbEmployeeStatus.SelectedValue = intResultFromQuery;   

Это будет работать независимо от того, вручную ли вы загрузили со списком значения кода, как и вы, или загрузите comboBox из запроса.

Если ваши внешние ключи являются целыми числами (что я и делаю, все они есть), жизнь проста. После того, как пользователь внесет изменения в comboBox, значение, которое вы будете хранить в базе данных, - SelectedValue. (Отправляйте в int по мере необходимости.)

Вот мой код, чтобы установить ComboBox в значение из базы данных:

if (t is DBInt) //Typical for ComboBox stuff
    {
    cb.SelectedValue = ((DBInt)t).value;
    }

А для извлечения:

((DBInt)t).value = (int) cb.SelectedValue;

DBInt является оболочкой для Integer, но это часть моего ORM, которая дает мне ручное управление привязкой данных и снижает ошибки кода.

Почему я так долго ответил на это? Я тоже боролся с этим, потому что, как кажется, в Интернете нет хорошей информации о том, как это сделать. Я понял это и подумал, что мне будет хорошо, и отправьте его кому-то еще.

Ответ 3

В приложении Windows мы используем это как

 DDLChangeImpact.SelectedIndex = DDLChangeImpact.FindStringExact(ds.Tables[0].Rows[0]["tmchgimp"].ToString());
 DDLRequestType.SelectedIndex = DDLRequestType.FindStringExact(ds.Tables[0].Rows[0]["rmtype"].ToString());

Ответ 4

Ниже будет работать в вашем случае.

cmbEmployeeStatus.SelectedItem =employee.employmentstatus;

Когда вы устанавливаете свойство SelectedItem для объекта, ComboBox пытается сделать этот объект выбранным в данный момент в списке. Если объект найден в списке, он отображается в части редактирования ComboBox, а свойство SelectedIndex устанавливается в соответствующий индекс. Если объект не существует в списке, свойство SelectedIndex остается на текущем значении.

ИЗМЕНИТЬ

Я думаю, что установка выбранного элемента, как показано ниже, неверна в вашем случае.

cmbEmployeeStatus.SelectedItem =**employee.employmentstatus**;

Как ниже

var toBeSet = new KeyValuePair<string, string>("1", "Contract");
cmbEmployeeStatus.SelectedItem = toBeSet;

Вы должны назначить правильную пару значений имени.

Ответ 5

Используйте свойство SelectedIndex для соответствующего статуса сотрудника в поле со списком.

Ответ 6

cmbEmployeeStatus.Text = "text"

Ответ 7

Я подозреваю, что что-то не так, когда вы спасаете db. Я понимаю ваши шаги как:

  • заполнять и связывать
  • пользователь выбирает и элемент, ударяет и сохраняет.. затем вы сохраняете в db
  • теперь, если вы выберете другой элемент, который он не выберет?

получил больше кода, особенно при сохранении? где в вашем коде инициализируются и заполняются список привязок

Ответ 8

попробуйте это

combobox.SelectedIndex = BindingSource.Item(9) where "9 = colum name 9 from table"

Ответ 9

Чтобы установить значение в ComboBox

cmbEmployeeStatus.Text="Something";

Ответ 10

Возможное решение:

cmbEmployeeStatus.SelectedValue = cmbEmployeeStatus.Items.FindByText("text").Value;

Ответ 11

Попробуйте следующее:

KeyValuePair<string, string> pair = (KeyValuePair<string,string>)this.ComboBox.SelectedItem;