Probléme combobox et datagridview

Résolu
Damiens29 - 24 janv. 2013 à 11:40
 Damiens29 - 29 janv. 2013 à 11:51
Bonjour,

J'ai un probléme avec ma combobox.
Elle se remplit bien par requete mais je souhaiterais que lorsque je selectionne une donné de ma combobox, mon datagridview m'affiche les données liés a cette combobox par rapport a ma BDD.

Merci d'avance pour votre aide !!

5 réponses

yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
24 janv. 2013 à 20:18
Salut,

tu sais qu'il y a moyen d'éviter les boucles de remplissage du grid,
il suffit de formater ton SELECT de fàçon à avoir exactement ce que tu veux voir afficher, puis tu fais :

leGrid.DataSource = (DataTable)dtResultat;
leGrid.DataBind(); // ici le grid se rempli tout seul


Ensuite tu peux affiner le rendu avec des évènement comme :
grid_CellFormatting // appelée a chaque remplissage d'une cellule
ou
grid_DataBound // pour chaque ligne "bindée" à la source de données

sinon pour le reste, c'est étroitement lié à ton programme, pas moyen de t'aider plus que ça.

bonne prog., bye...
3
yann_lo_san
Messages postés
1137
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
23 janvier 2016
24
24 janv. 2013 à 14:19
Salut,

tu fais une fonction qui rempli le gridView selon la valeur selectionnée dans la combo.
Au changement de la valeur de la combo (evt selectedIndexChanged) tu rappelle la fonction de remplissage du grid:

private System.Windows.Forms.DataGridView _grid;
private System.Windows.Forms.ComboBox _cbo;

private void PopulateDataGridView()
{
    _grid.Rows.Clear();

    // la valeur en cours de la combo
    string sValCombo = _cbo.SelectedItem.ToString();
    if( !String.IsNullOrEmpty(sValCombo) )
    {
        // requete avec sValCombo
        // Bind grid
    }
}

private void _cbo_SelectedIndexChanged(object sender, EventArgs e)
{
// Vide et rerempli le grid
Cursor.Current = Cursors.WaitCursor;
try
{
PopulateDataGridView();
}
catch ( Exception ) { }
finally
{
Cursor.Current = Cursors.Default;
//_grid.Focus();
}
}



bye...
0
En fait,c est ce que je fais déjà mais ca n'a pas l'air de fonctionner..

Tu vas peut être voir une erreur que je n'ai pas vu :

private void combo_salarié_SelectedIndexChanged(object sender, EventArgs e)
        {
            string ComboSala;
            int k = 0;
            ComboSala = combo_salarié.SelectedItem.ToString();
            connexion.Open();
            SqlDataAdapter command new SqlDataAdapter("SELECT * FROM dbo.T_Temporaire where  Temp_Salarie '" + ComboSala + "' ", connexion);
            
            command.Fill(data_temporaire2, "Temp_Periode");
            command.Fill(data_temporaire2, "Temp_Service");
            command.Fill(data_temporaire2, "Temp_Salarie");
            command.Fill(data_temporaire2, "Temp_CodeProjet");
            command.Fill(data_temporaire2, "Temp_LibProjet");
            command.Fill(data_temporaire2, "Temp_NbJours");
            command.Fill(data_temporaire2, "Temp_Commentaires");

            //Dgv_D_Salarie.DataSource = data_temporaire.Tables[0];
            foreach (DataRow row in data_temporaire2.Tables[0].Rows)
            {
                if (k < data_temporaire2.Tables[0].Rows.Count)
                {
                    
                    Dgv_D_Salarie.Rows[j].Cells[1].Value = row["Temp_Periode"];
                    Dgv_D_Salarie.Rows[j].Cells[3].Value = row["Temp_Service"];
                    Dgv_D_Salarie.Rows[j].Cells[4].Value = row["Temp_CodeProjet"];
                    Dgv_D_Salarie.Rows[j].Cells[5].Value = row["Temp_LibProjet"];
                    Dgv_D_Salarie.Rows[j].Cells[6].Value = row["Temp_NbJours"];
                    Dgv_D_Salarie.Rows[j].Cells[7].Value = row["Temp_Commentaires"];
                }
                j++;
            }
            connexion.Close();
        } 
0
Je viens de voir la plupart des mes erreurs (row[j] au lieu de row[k],j++ au lieu de k++ mais j'ai toujour un probléme quand je vide le dgv,il sort complétement de mon selectedindex.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Je te remercie pour ta réponse.
Je ne suis pas encore trés callé niveau databinding et autre tableadapter.
Pour le moment,je n'utilise que des requetes sql et des dataset mais je vais m'y mettre d'ici peu.
A bientot !
0