2009-05-11 4 views
0

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

Я использую 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)».

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

ответ

6

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

3

Вы уже получили (хороший) ответ, но я подумал, что это может быть на месте, чтобы указать это в любом случае: в поле со списком вашего приложения каждый элемент будет фактически полным объектом 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 
} 
+0

спасибо, это хороший ответ. Я пропустил часть о том, чтобы отдать ее на работу. Благодарю. –