Trier une DATAGRIDWIEW en C# ?

Signaler
Messages postés
2
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
23 juillet 2009
-
Messages postés
2
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
23 juillet 2009
-
Amis développeuses et développeurs bonjour,
Je viens a l'instant de m'inscrire sur ce riche site qui s'avère être un outil complémentaire a un développeur logiciel.
j'espere que je reussirai a expliquer clairement mon problème afin de faire gagner du temps a tout le monde et par ailleurs obtenir une reponse très rapidement.

je développe sous C# avec l'application Visual Studio 2008 Express Edition. j'ai réalisé une Application de Gestion de Parc Informatique qui est connecté a une base de données SQL 2008.

Dans mon application j'utilise la propriété MDI (Parent Form, Child Form), la propriété User Control afin de minimiser et de regrouper les fenêtres a utiliser pour les différentes saisies.

chaque User control représente une table de la base (ex: la Table regroupant les machines possède un User control Machine servant a recuperer les différentes informations relatives a une machine.)

Sur chaque User control j'ai inserer un datagridview affichant un dataset de la table en question afin de visualiser l'insertion dans la table.

par défaut un datagridview tri automatique lorsqu'on clique sur les entetes des colonnes. mais dans mon programme j'ai rajouté a un evenement du datagridview le code suivant

//Evenement sur la Selection du DatagridView
private void dataGridViewListeMaintenance_SelectionChanged(object sender, EventArgs e)
{
int i = int.Parse(dataGridViewListeMaintenance.CurrentRow.Index.ToString());
if (i == 0)
{
buttonbottom.Enabled = true;
buttonUp.Enabled = false;
}
else if (i == dataGridViewListeMaintenance.RowCount - 1)
{

buttonbottom.Enabled = false;
buttonUp.Enabled = true;
}
else
{
buttonbottom.Enabled = true;
buttonUp.Enabled = true;
}
}
ce morceau de code me permet de désactiver des boutons permettant de déplacer la ligne selectionnée dans le datagridview lorsque j'ateint les extremité de ma data c a dire la ligne 0 et la derniere ligne de la table.

Mon problème est le suivant ! lorsque ce bout de code ci dessus est en action, mon appli plante lorsque je veux trier en cliquant sur l'entete des colonnes

le problème est sur cette ligne la du code

int i = int.Parse(dataGridViewListeMaintenance.CurrentRow.Index.ToString());

Message d'erreur
La référence d'objet n'est pas définie à une instance d'un objet.

lorsque je le désactive (mode commentaire) le tri deviens possible mais mes boutons de déplacement de la ligne sélectionnée ne sont plus désactivés en extrémité de table.

j'aimerai savoir pk mon problème survient sur cette ligne la?
qu'est ce que je dois ecrire a la place pour pouvoir selectionner l'index de la ligne sélectionnée.

j'espere avoir expliqué clairement mon problème, je remercie toutes les personnes qui liront ce message.
Bonne journée.

2 réponses

Messages postés
61
Date d'inscription
dimanche 5 novembre 2000
Statut
Membre
Dernière intervention
24 février 2010

salut.
Est ce que tu ne peux pas faire les choses les unes apres les autres ?
Tu tri, puis tu désactives les boutons.
Oubien avant chaque "tri" tu fais un débloquage ... enfin une idée comme une autre, mais bon ça repond pas vraiment au "pourquoi ça plante" parceque je suis pas sûr du tout alors je prefere pas dire de connerie :p

a+
Messages postés
2
Date d'inscription
mercredi 10 juin 2009
Statut
Membre
Dernière intervention
23 juillet 2009

c pas vraiment utile ! l'evenement selection permet de désactiver les boutons. je m'explique lorsque je lance l'appli la datagridview se charge avec les élements de ma base sous forme de ligne ! la premiere ligne de la datagridview est selectionnée. cette selection désactive mon bouton Up qui me permet de monter plus haut dans la liste. lorsque j'ateint la derniere ligne de ma datagridview le bouton down se désactive. mais je devrai etre capable malgré ses boutons de pouvoir retrier ma datagridview en fonction des entetes. mais le bouton de code

int i = int.Parse(dataGridViewListeMaintenance.CurrentRow.Index.ToString());

me fait planter le tri et si je la met en commentaire mes boutons sont plus désactivés en extrémités de ma datagridview donc faut vraiment que ca soit possible en meme temps.

Merci d'avoir pris la peine de repondre j'espere que quelqu'un pourra m'aider !

merci