我通常会进行网络编程,但在我正在处理的这个项目中需要一个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与名称?
答案 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
}