comboBox objets metiers datagridview
dsl de remettre ce message j'en ai vu des dizaines déjà sur le forum mais aucun ne m'a donné la solution .
Voi j'ai une archi 3/3 je fais une requetes et je recois des objets métiers contenant des Civilités (Id/Lib/lib réduit)
Je veux remplacer le txtbox du DGV par un CBbox dc j'ai regardé comment l'on fait cela dans la msdn :
je supprime la colonne
j'en créé une nouvelle, je lui affecte une valueMember 'xx' et une display member 'yy' mais le problème c'est que j'ai toujours une erreur m'informant que le champ demandé n'existe pas...
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
|
----------------------------------------
OBJET TRANSPORT LOCATAIRE
public Civilite()
{
Id= String.Empty;
Lib = String.Empty;
}
public Locataire()
{
Nom = String.Empty;
Prenom = String.Empty;
Civilite = new Civilite;
}
------------------------------
//ici le code ds la couche de présentation
int position = dGViewLocataire.Columns["Civilite"].Index;
dGViewLocataire.Columns.Remove("Civilite");
DataGridViewComboBoxColumn comboboxColumn = new DataGridViewComboBoxColumn();
comboboxColumn.Name = "Civilite";
comboboxColumn.HeaderText = "Titre représentant";
comboboxColumn.Width = 90;
comboboxColumn.MaxDropDownItems = 6;
comboboxColumn.ValueMember = "Civilite";
//comboboxColumn.DisplayMember = "";
comboboxColumn.DataPropertyName = "Civilite";
comboboxColumn.DataSource = Titres;
dGViewLocataire.Columns.Insert(position, comboboxColumn); |
Titres une liste générique de civilité.
Ma source de données n'est pas un DataSet mais une liste d'objet métiers
Désolé c'est un problème récurent sur le forum mais je n'ai pas réussi a trouver la solution
s'il y a un problème, il y a une solution,
s'il n'y a pas de solution il n'y a pas de problème... le dalai lama
il a bien raison cet homme
Enfin j'ai trouvé une solution sur le forum de MS... donc le but est simplement de mettre dans ton business object la propriété 'Self' ou le nom que tu souhaites d'ailleurs et de lier cette propriétés au binding
Ca dans la classe Titre
Code:
1 2 3 4
| public Titre Self
{
get { return this; }
} |
Ca dans la création du datagridviewcombobowcolumn
Code:
1 2 3 4 5 6 7 8 9 10
| DataGridViewComboBoxColumn dgvcbc = new DataGridViewComboBoxColumn();
titres.Insert(0, new Titre());
dgvcbc.DataSource = titres;
dgvcbc.DefaultCellStyle.NullValue = new Titre();
dgvcbc.Name = "Titre";
dgvcbc.DataPropertyName = "Titre";
dgvcbc.DisplayMember = "Id";
dgvcbc.ValueMember= "Self";
dgv.Columns.Add(dgvcbc); |