Histoire de rafraichissement ?

georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007 - 11 déc. 2005 à 23:51
georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007 - 15 déc. 2005 à 20:33
Bonjour,

C'est un problème curieux que je rencontre là. Je dispose d'un dataset dans lesquels j'alimente 3 tables :
- la table "membre" (membreCode, membreNom, ...)
- la table "equipes" (equipeCode, equipeNom, ...)
- la table "lien_membre_equipe" (equipeCode, equipeCode)

Il apparaissait alors intéressant de créer une DataRelation entre la table "membre" et "lien_membre_equipe" de mon DataSet :
teamDataRelation = new DataRelation("membreTeam", ds.Tables["membres"].Columns["MEMBRECODE"], ds.Tables["lien_membre_equipe"].Columns["MEMBRECODE"]);

Après j'alimente deux datagrids :
- dg_membres -> dg_membres.SetDataBinding(ds,"membres");
- dg_membreEquipes -> dg_membreEquipes.SetDataBinding(ds,"membres.membreTeam");

Comme il est plus sympa pour l'utilisateur de saisir directement le nom de l'équipe au lieu de tapper le code de l'équipe, j'ai donc choisi à l'aide d'un DataGridStyle, d'afficher dans la colonne "EQUIPECODE" de mon datagrid un menu déroulant avec le nom des équipes, tout en renvoyant l'EQUIPECODE correspondant.

Ca fonctionne "presque bien" si ce n'est qu'au lieu de visualiser

dans dg_membresEquipes
le nom de l'équipe

correspondant au membre sélectionné dans dg_membres, j'obtiens "null"

Le plus louche c'est quand je clique sur null, j'ai mon combobox qui s'ouvre et je peux choisir un nom d'équipe. Et même l'enregistrement fonctionne !! Mais une fois enregistré, je me retrouve de nouveau avec l'intitulé "null" dans mon datagrid. (en base de données par contre l'enregistrement reste toujours correct)

Une idée ? Serait-ce une histoire de "rafraichissement" ?

Le code de mon datagridStyle au besoin :
tableStyle = new DataGridTableStyle();
tableStyle.MappingName = "lien_membre_equipe";
tableStyle.RowHeadersVisible = true;
tableStyle.RowHeaderWidth = 40;

DataGridComboBoxColumn column_1 = new DataGridComboBoxColumn();
column_1.MappingName = "EQUIPECODE";
column_1.HeaderText = "Code de l'equipe";
column_1.Width = 150;
column_1.myComboBox.DataSource = ds.Tables["equipes"].DefaultView;
column_1.myComboBox.DisplayMember = "EQUIPENOM";
column_1.myComboBox.ValueMember = "EQUIPECODE";
tableStyle.PreferredRowHeight = column_1.myComboBox.Height;
tableStyle.GridColumnStyles.Add(column_1);
this.dg_membreEquipes.TableStyles.Add(tableStyle);

3 réponses

georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007
11 déc. 2005 à 23:54
Dsl pour les polices de grandes tailles ce n'était pas volontaire :-/
et petite correction pour la table "lien_membre_equipe" elle se compose de (membreCode, equipeCode)
0
crougni77 Messages postés 28 Date d'inscription dimanche 24 août 2003 Statut Membre Dernière intervention 28 septembre 2009
12 déc. 2005 à 20:55
Salut georgeduke,



il ne te manquerait pas une relation entre lien_membre_equipe et equipe ?




CrougniMan
0
georgeduke Messages postés 167 Date d'inscription dimanche 6 février 2005 Statut Membre Dernière intervention 13 avril 2007
15 déc. 2005 à 20:33
Salut et merci de ta réponse. Non à priori je ne pense pas qu'il faille faire cette relation, car finalement j'affiche uniquement la table lien_membre_equipe avec un petit datagridTablestyle pour que l'utilisateur choisisse le nom d'une équipe mais que la valeur retournée soit un code... Et cela fonctionne presque car l'enregistrement ne pose pas de problème...

Mais bon je continue l'enquête... mais ne vous gênez pas pour me donner un chti coups de pouce :-)
0
Rejoignez-nous