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.
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";
        }
Sur l'event cbx_SelectedIndexChanged
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.

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";
     }
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
 
 System.Type t = cbx.SelectedValue.GetType();
            if (t.Name.ToString() == "Int32")
            {
                  // Traitement
            }
Alors effectivement ca fonctionne,mais pourquoi a l'initialisation il est de type Datarowview, et prq change t-il en Int32 d'un coup ?

Autre remarque cette façon de coder me parait, comment dire, pas trés pro, pas trés propre que me conseillez vous ?


Merci