[英]Combo Box and Entity Framework
我正在使用Winforms,C#,VS2010和Entity Framework编写一个简单的第一个应用程序。 基本上,我正在挖掘一个丰富的数据库,并且我已经建立了框架,足以成功地用工作订单表的一个子集填充DataGridView控件。
现在,我想在其值为ProjectID且DisplayValue为ProjectNbr的窗体(“ cbProjectID”)上放置一个组合框。 我只想将与WorkOrders相关的项目放在组合框列表中,并且只将该项目集中的唯一ProjectID放在其中(一个项目可能有数十个工作单。
我假设我需要使用LINQ从EF生成列表。 我在LINQ上还很新,我还没有弄清楚...到目前为止这是我的代码...
using System;
using CPASEntityFramework;
using System.Data.Entity;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace BrowseWorkOrders
{
public partial class BrowseWOs : Form
{
public BrowseWOs()
{
InitializeComponent();
}
private void BrowseWOs_Load(object sender, EventArgs e)
{
var context = new CPASEntities();
var query = context.tblWorkOrders.Where(c => c.ProjectID==8);
tblWorkOrderBindingSource.DataSource = query.ToList();
// Now, I want to load up the Combo Box with all the projects in the Work Order Table
}
}
}
我一直在网上寻找一种我理解的方法,但是我失败了。 也许有人可以帮助我。 这是我的数据源(我假设我不应该使用tblProject,而应该在tblWorkOrder中使用tblProject以获得我的子集...)
任何帮助和/或指导将不胜感激。
现在是代码...
namespace BrowseWorkOrders
{
public partial class BrowseWOs : Form
{
public BrowseWOs()
{
InitializeComponent();
}
private void BrowseWOs_Load(object sender, EventArgs e)
{
// Following loads up all Projects into the cbProjectID Combo Box
var context = new CPASEntities();
var PrID = context.qryProjectIDNbrDescs.ToList();
cbProjectID.DataSource = PrID;
cbProjectID.ValueMember = "ID";
cbProjectID.DisplayMember = "ProjectNbr";
}
private void cbProjectID_SelectedIndexChanged(object sender, EventArgs e)
{
var context = new CPASEntities();
var query = context.tblWorkOrders.Where(c => c.ProjectID == (int)cbProjectID.SelectedValue).ToList();
tblWorkOrderBindingSource.DataSource = query;
}
}
}
您需要顶部的tblProject,因为另一个仅用于单个WorkOrder。 但是,您需要使用至少具有WorkOrder的人员来过滤列表:
var projects = context.tblProjects.Where(p => p.tblWorkOrders.Any()).ToArray();
cbProjectID.DataSource = projects;
cbProjectID.ValueMember = "ProjectID";
cbProjectID.DisplayMember = "ProjectNbr";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.