Vs2010 beta framework 3.5
Niveau : Débutant.
Bonjour à tous
je test actuellement divers composants et je me trouve confronté a un phénomène inexplicable
contexte : une form, 2 combos 'liées'
Utilisation : l'utilisateur selectionne dans la 1er combo les editeur, la 2nd se remplit des publication suite au choix dans la 1er (rien d extraordinaire)
Au démarrage j'alimente ma première Combo via un dataset.
Sur l'event cbx_SelectedIndexChanged
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public Form1() { InitializeComponent(); DataSet ds = bll.SelectEditeur(); cbx.DataSource = ds.Tables[0]; cbx.DisplayMember = "Nom"; cbx.ValueMember = "Id"; }
je recupere la value de la 1er combo comme paramètre pour la seconde requete et je remplis ma seconde combo via le resultat dans le second Dataset.
Probleme : lors du lancement qd je recupere le selectedValue il est bien sous la forme d'un Datarowview, jusque la normal, mais a la premiere selection d'un Editeur le selectedvalue est de Type Int32 d'ou mon :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 private void cbx_SelectedIndexChanged(object sender, EventArgs e) { int index; System.Type t = cbx.SelectedValue.GetType(); if (t.Name.ToString() == "Int32") { index = int.Parse(cbx.SelectedValue.ToString()); } else { DataRowView SelectedRow = (DataRowView)cbx.SelectedValue; index = int.Parse(SelectedRow[0].ToString()); } DataSet ds = bll.SelectPublication(index); cb2.DataSource = ds.Tables[0]; cb2.DisplayMember = "Titre"; cb2.ValueMember = "Id"; }
Alors effectivement ca fonctionne,mais pourquoi a l'initialisation il est de type Datarowview, et prq change t-il en Int32 d'un coup ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 System.Type t = cbx.SelectedValue.GetType(); if (t.Name.ToString() == "Int32") { // Traitement }
Autre remarque cette façon de coder me parait, comment dire, pas trés pro, pas trés propre que me conseillez vous ?
Merci
Partager