如何获得组合框值?

时间:2009-05-11 20:03:52

标签: c# subsonic combobox

我通常会进行网络编程,但在我正在处理的这个项目中需要一个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)”。

如何获取作业ID与名称?

2 个答案:

答案 0 :(得分:6)

您可能希望查看组合框的SelectedValue属性。您将ValueMember设置为ID,因此SelectedValue应包含正确的值。

答案 1 :(得分:3)

你已经得到了(一个好的)答案,但我认为无论如何都可以指出这一点:在你的应用程序的组合框中,每个项目实际上都是一个完整的Job对象,而不仅仅是一个字符串表示。因此SelectedItem属性将返回当前在ComboBox中选择的Job对象。您只需将其转换为Job:

即可访问其任何成员
Job currentJob = cboJobs.SelectedItem as Job;
if (currentJob != null)
{
    // here you can access currentJob.Name, currentJob.Id or any other member
}