J'écris une première application simple en utilisant Winforms, C#, VS2010 et Entity Framework. Fondamentalement, j'ai un DB riche que je suis en train de taper, et j'ai déjà mis en place le framework, avec suffisamment de succès pour remplir un contrôle DataGridView avec un sous-ensemble de la table Work Order.Combo Box et Entity Framework
Maintenant, je veux placer une zone de liste déroulante sur le formulaire ("cbProjectID") dont la valeur est ProjectID et DisplayValue est ProjectNbr. Je veux seulement mettre des projets dans la liste déroulante qui sont liés à WorkOrders, et seulement ProjectIDs uniques dans cet ensemble (un projet peut avoir des douzaines d'ordres de travail ....)
Je suppose que j'ai besoin de générer une liste de EF, en utilisant LINQ. Je suis assez nouveau à LINQ, et je ne suis pas figurer dehors ... Voici mon code jusqu'à présent ...
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
}
}
}
que je suis à travers le filet en essayant de trouver une méthode que je comprends, mais J'échoue. Peut-être que quelqu'un peut m'aider. Voici ma source de données (je suppose que je ne devrais pas utiliser tblProject, mais au lieu d'utiliser le tblProject intérieur tblWorkOrder afin d'obtenir mon sous-ensemble ...)
Toute aide et/ou des conseils seraient appréciés.
Voici le code maintenant ...
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;
}
}
}
J'ai trouvé l'erreur que je fait dans ce fil de discussion: [Stack Overflow Link] [1] [1]: http://stackoverflow.com/questions/4992129/combobox-selected-value-in-c-sharp –