如何在wpf中只将访问数据库中的某些特定项填充到组合框中?

时间:2015-04-24 06:42:09

标签: c# wpf

例如,我在数据库中有一个名为“Project”的列,其中包含项目编号,如p1,p2等。 “Project”列与另一个表中的另一个列“Tasks”链接,其中包含p1的t1,t2,t3和p2的t4,t5,t6等。 因此,当我在项目字段中选择p1执行时,它应该只显示其相关的任务编号,即“任务”组合框中只显示t1,t2,t3,当我选择p2时,它应该只显示t4,t5,t6。

现在我的问题是它在“任务”组合框中显示从t1到t6的所有任务而不是特定的任务。

对此问题的任何可行解决方案(如代码段和指南)表示赞赏,谢谢。

2 个答案:

答案 0 :(得分:0)

请参阅以下示例

Project Table:

    ID ProjectName
    1   P1
    2   P2

任务表:

ID ProjectID TaskName
1   1          T1
2   1          T2
3   1          T3
4   2          T4
5   2          T5
6   2          T6

将项目ID作为参数传递给查询

Select TaskName from Task Where ProjectID = 1 -- @ProjectID

结果:

ID
T1
T2
T3

OR

如果您拥有对象中的所有值,则可以使用LINQ。

包含命名空间System.LINQ

int selectProjectID = 1;
var projectTask = task.where(x => x.ProjectID == ProjectID).ToList();

将projectTask绑定到下拉列表

答案 1 :(得分:0)

private void cbx_pbnum_DropDownOpened(object sender,EventArgs e)         {  列出lstprodbacklog = obcpb.Where(p => p.ProjectTableId.ToString()== cbx_projectname.SelectedValue.ToString())。ToList();

        if(lstprodbacklog.Count>0)
        {

            cbx_pbnum.Items.Clear();
            foreach (ProductBacklog pb in lstprodbacklog)
            {
                if (cbx_projectname.SelectedValue.ToString() == pb.ProjectTableId.ToString())
                {
                    cbx_pbnum.Items.Add(pb.PBNum);                           
                }
            }
        }

}