Probème de remplissage sur un DataGrid

Résolu
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 - 26 févr. 2008 à 15:16
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 1 mars 2008 à 23:44
Bonjour à tous,

J'aimerais réaliser un DataGrid dans lequel se trouverais les 5 dernières interventions du client choisit auparavant.

Je n'ai jamais réalisé de DataGrid donc j'ai besoin de votre aide s'il vous plais.

Je pense avec les tutos que j'ai lu, qu'il serait bien que je réalise un dataSet.

J'aimerais avoir votre aide sur le procédé de comment réaliser et surtout remplir mon dataGrid??

J'ai essayé quelque chose mais ça fonctionne pas :

CODE :
string
requete ("SELECT TOP 5 INTERVENTION.IN_NUMINTER, CONTACT.CT_NOMCTACT, MACHINE.M_NOMMAT FROM INTERVENTION INNER JOIN MACHINE ON INTERVENTION.IN_IDMAT MACHINE.M_IDMAT AND INTERVENTION.IN_NUMCLT = dbo.MACHINE.M_NUMCLT INNER JOIN CONTACT ON MACHINE.M_NUMCTACT = CONTACT.CT_NUMCTACT WHERE INTERVENTION.IN_NUMCLT = '" + NumClt.Text + "' ORDER BY INTERVENTION.IN_NUMINTER DESC");connection =

new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");connection.Open();

try{
SqlDataAdapter dataAdapter new SqlDataAdapter(requete,connection);DataSet ds

new DataSet();dataAdapter.Fill(ds);

}

catch(Exception ex){

MessageBox.Show(ex.ToString());

}

finally{

connection.Close();

}

Merci d'avance pour votre aide!!

28 réponses

loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
27 févr. 2008 à 15:35
Je suis désolé mais ça fonctionne toujours pas pour la première ligne c'est à dire que si je clique sur la première ligne-1er colonne en premier, rien ne se passe.

Je comprend pas pourquoi.

P.S : sinon pour le problème suivant -->  Je souhaiterais pouvoir juste cliquer sur les NumInterventions(première colonne du datagrid) Comment je peux faire pour faire cela??, j'ai résolu ce problème par un "if".

merci d'avance!!
0
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
28 févr. 2008 à 10:51
Hello Loic, alors en fait le souci avec l'evenement

CurrentCellChanged c'est qu'initialement le DataGrid selectionne la celule d'index (0,0) donc la premiere, pour que l'evenement se declenche il faut changer de cellule....

Pour éviter ce souci, il faut plutot implémenter l'evenement MouseDown du DataGrid, comme ceci :




private



void
dataGrid1_MouseDown(

object
sender, System.Windows.Forms.MouseEventArgs e)
{
   DataGrid monGrid = (DataGrid) sender;
   System.Windows.Forms.DataGrid.HitTestInfo hti;
   hti = monGrid.HitTest(e.X, e.Y);
   NumInter.Text = dataGrid1[hti.Row ,hti.Column].ToString();
   NumInter.Visible=

true
;
   LieuInter.Visible=

true
;
   RaisonInter.Visible=

true
;
   EtatInter.Visible=

true
;
}

Dans ce cas de figure le CurrentCellChanged n'est plus utilie, tu peut le supprimer de ta fenètre SuiviIntervention. 

A +
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
28 févr. 2008 à 11:06
Bonjour,

Merci pour cette information, cela fonctionne mais maintenant mon "if" qui doit me permettre de faire que la sélection de la première colonne ne fonctionne plus.

Donc je vois pas comment faire à présent.
Qu'appele-tu X et Y de : hti = monGrid.HitTest(e.X, e.Y);  ??

Avant mon "if" était de la manière suivante : if

(dataGrid1.CurrentCell.ColumnNumber.Equals(0)){
......
}

merci d'avance pour ton aide!! Et encore merci pour l'aide que tu m'as apporté.
0
lassaad83 Messages postés 148 Date d'inscription vendredi 28 avril 2006 Statut Membre Dernière intervention 1 décembre 2009
28 févr. 2008 à 11:39
e.X définie l'abscisse de la souris et e.Y définie l'ordonnée de la souris, je t'en ai deja parler plus haut en te disant qu'il fallait recuperer les coordonnées du click de la souris.

On doit utiliser la méthode HitTest pour déterminer sur quel élément de la grille le clic a été effectué et cela par l'intermédiaire de l'evenement MouseDown.

Bien entendu englobe le tout par ton If (dataGrid1.CurrentCell.ColumnNumber.Equals(0))
si tu veux restreindre le click uniquement sur la première colonne.
0

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

Posez votre question
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
28 févr. 2008 à 11:44
Merci pour tes renseignements.

Suis d'accord avec toi pour le "if" mais le problème c'est que ça fais rien, on peux quand même cliquer sur les autres colonnes.

Je sais pas comment faire pour que ça fonctionne c'est à dire ou le mettre.....??

merci d'avance!!
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
28 févr. 2008 à 14:43
Merci car ça fonctionne bien.

Merci pour tout.

J'ai une dernière question qui n'a rien avoir mais je voulais savoir si tu savais : en fait voila, j'ai un DateTimePicker qui correspond à la date de prise en charge.
J'aimerais pouvoir enregistrer dans la base "<NULL>" lorsque ce dernier à son 'checked=false'.
Donc j'ai effectué le code suivant :

// Si le dépositaire n'est pas renseigné

// alors <NULL> sera affiché dans la base

string DateCharge="<NULL>";

string Depo="<NULL>";

if(!Depositaire.Text.Equals("")){

Depo=Depositaire.Text;

DateCharge=DatePrisEnCharge.Text;

}

// Si la date de pise en charge n'est pas grisé.

if (DatePrisEnCharge.Checked ==
true){
commander new SqlCommand("UPDATE INTERVENTION SET IN_PRICHARG '" + DatePrisEnCharge.Text + "' WHERE IN_NUMINTER = '" + NumIntervention.Text + "'", connection);commander.ExecuteNonQuery();

}

// Sinon si la date de pise en charge est grisé.

else
if (DatePrisEnCharge.Checked ==
false){
commander new SqlCommand("UPDATE INTERVENTION SET IN_PRICHARG '" + DateCharge + "' WHERE IN_NUMINTER = '" + NumIntervention.Text + "'", connection);commander.ExecuteNonQuery();

}

Mon problème c'est que si le Checked=false, il m'enregistre bien dans la base"<NULL>" mais il m'affiche l'erreur suivante : "System.NullReferenceException:Erreur de syntaxe lors de la conversion d'une valeur datetime à partir d'une chaîne de caractères "
Si ta une idée pour qu'il m'affiche plus l'erreur, je suis preneur car je me prend la tête avec ça depuis quelque temps.
ATTENTION : jve po profiter de ta gentillesse non plus, juste si ta une idée.

merci d'avance et encore merci pour le reste!! C cool!!
0
loic20h28 Messages postés 207 Date d'inscription mardi 19 juin 2007 Statut Membre Dernière intervention 22 février 2016 2
28 févr. 2008 à 15:45
Merci pour ton aide.

Vraiment un grand merci.
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 mars 2008 à 23:44
Salut,

Et sinon pour réellement clore le sujet, regardez du côté des requêtes paramétrées :
- http://www.csharpfr.com/tutoriaux/UTILISATION-REQUETES-PARAMETREES-AVEC-ADO-NET_709.aspx
- http://www.csharpfr.com/tutoriaux/COMMENT-FAIRE-REQUETE-PARAMETREE-DANS-BASE-DONNEE_710.aspx

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous