Как мне получить значение в выпадающем списке? - PullRequest
0 голосов
/ 12 мая 2009

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

Я использую SubSonic, чтобы получить список заданий и загрузить комбинированный список:

JobCollection jobs = new JobCollection().Load();
cboJobs.DisplayMember = "Name";
cboJobs.ValueMember = "Id";
cboJobs.DataSource = jobs;

Когда пользователь выбирает элемент и нажимает кнопку поиска, мне нужно запросить базу данных, используя поле «Id» задания.

TransactionCollection transactions = new TransactionCollection();
if (!String.IsNullOrEmpty(txtTransactionId.Text))
{
    transactions.Where("id", txtTransactionId.Text);
}
else
{
    transactions.Where("raw_data", Comparison.Like, "%" + txtFind.Text + "%");     
}
transactions.Where("job_id", Convert.ToInt32(cboJobs.SelectedItem));
transactions.Load();

Строка, в которой возникла проблема, называется "Convert.ToInt32 (cboJobs.SelectedItem)".

Как мне получить идентификатор задания вместо имени?

Ответы [ 2 ]

6 голосов
/ 12 мая 2009

Возможно, вы захотите посмотреть на свойство SelectedValue вашего списка. Вы устанавливаете ValueMember на ID, поэтому SelectedValue должно содержать правильное значение.

3 голосов
/ 12 мая 2009

Вы уже получили (хороший) ответ, но я подумал, что в любом случае это уместно указать: в поле со списком вашего приложения каждый элемент фактически будет полным объектом Job, а не только строковым представлением , Таким образом, свойство SelectedItem будет возвращать объект Job, который в данный момент выбран в ComboBox. Вы можете получить доступ к любому из его членов, просто приведя его к Job:

Job currentJob = cboJobs.SelectedItem as Job;
if (currentJob != null)
{
    // here you can access currentJob.Name, currentJob.Id or any other member
}
...