【问题标题】:how to fill only some specific items from access database into combobox in wpf?如何仅将 access 数据库中的某些特定项目填充到 wpf 中的组合框中?
【发布时间】:2015-04-27 15:33:33
【问题描述】:

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

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

感谢任何可行的解决方案,如代码 sn-ps 和指南,谢谢。

【问题讨论】:

  • 只需过滤列表以匹配项目字段中选择的项目。
  • 我不知道过滤,你能发一个代码sn-p吗。
  • 例如使用 LINQ:DisplayedTasks = allTasks.Where(task => task.ProjectId == SelectedProject.ProjectId)

标签: c# wpf


【解决方案1】:

请看下面的例子

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

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

包括命名空间 System.LINQ

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

将 projectTask 绑定到下拉菜单

【讨论】:

  • 我认为你想将 T4、T5 和 T6 分配给 P2 我只是在猜测,但只有这样你的答案才是正确的。
  • 你是对的。谢谢我会更新它。我没有声望来支持你的评论。将来会这样做:)
  • 谢谢,我会试试这个。我没有声望来支持你的评论。将来会这样做:)
【解决方案2】:

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);                           
                }
            }
        }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2019-11-26
    • 2018-12-14
    • 1970-01-01
    • 1970-01-01
    • 2011-02-05
    • 1970-01-01
    相关资源
    最近更新 更多