C# et datagrid

palya Messages postés 12 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 21 février 2006 - 14 févr. 2006 à 19:47
palya Messages postés 12 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 21 février 2006 - 16 févr. 2006 à 14:07
Salut tout le monde!
Je développe un logiciel de gestion de parc en C#. Pour cela, j'effectue des requêtes sur WMI à partir des clients qui envoient les résultats au serveur. Ce dernier les renvoi sur un seul poste (admin réseau). C'est à ce niveau que j'ai un problème:
je stocke les infos dans un ArrayList et je veux récupérer seulement certaines (je teste avec un if) que j'enregistre dans des varaiables. Mais lorsque je veux afficher les variables dans le datagrid ça bugge l'application contenant la form du datagrid ("unhandled execption").
J'aimerais être aidée sur ce point car je n'arrive pas à le résoudre.

Aussi, j'aimerais avoir vos conseils sur un point de mon application:
lorsque le serveur reçoit les données pour les renvoyer, comment identifier les messages de chaque client, une fois arrivés sur le poste admin?

Merci d'avance

2 réponses

TheSaib Messages postés 2367 Date d'inscription mardi 17 avril 2001 Statut Membre Dernière intervention 26 décembre 2007 23
15 févr. 2006 à 10:14
Un bout de code , ou plus d'explication de comment tu envois les données, remoting ? Socket ? WebServices ? DB ? ...

::|The S@ib|::
MVP C#.NET
0
palya Messages postés 12 Date d'inscription mardi 24 mai 2005 Statut Membre Dernière intervention 21 février 2006
16 févr. 2006 à 14:07
tout d'abord lorsque je clique annuler sur la boîte de dialogue du CLR, il me dit "an object reference not set to en instance of an object".

Maintenant, voici la partie du code où sa bugge, c'est la fonction qui permet de récupérer et d'afficher les données de tous les clients (sur l'admin):


public void ReceiveMsg()


{


try


{


while (Thread
.CurrentThread
.IsAlive
)//while(true)


{


//Thread.Sleep(500);


if(SocketAdmin
.Connected
)


{


if(SocketAdmin
.Poll(10,SelectMode
.SelectRead
) && SocketAdmin
.Available
0)


{


//La connexion a été clôturée par le serveur ou bien un problème


//réseau est apparu


MessageBox
. Show ("La connexion au serveur est interrompue.");


Thread
.CurrentThread
.Abort();


}


if(SocketAdmin
.Available
>0)


{


int paquetsReceived
=1;


int nb
= 0;


//Socket.Select(sendList, null, null, 1000);//selectionne le socket( correpondant a la liste lecture)pret a etre lu


while (SocketAdmin
.Available
>0)//tq il y a des msgclients(socket)


{


try


{


msg
= new byte[SocketAdmin
.Available
];// initialise le msg en bits a recevoir


SocketAdmin
.Receive(msg
,msg
.Length
,SocketFlags
.None
);//on reçoit le msg correspondant au socket client


nb
= nb
+1;


dataReceived
=System
.Text
.ASCIIEncoding
.ASCII
. GetString (msg
);


//Console.WriteLine("mes : "+dataReceived+"");


if(paquetsReceived
== 1)//si paquets


{


//on cherche le client


if (dataReceived
== "Admin")


{


msgReceived
=dataReceived
;


Console
. WriteLine ("mess admin: "+msgReceived
+"");


}


if(dataReceived
! ="Admin")


{


msgReceived
=GetMsg(msg
);//renvoie le mss byte[] en string


GetProp(msgReceived
);//ajoute les propriétés avec leur id ds un arraylist


//je ne veux insérer que les messages clients;



try


{


//si je met ça ici :GetProp(msgReceived); //il me dit que le tableau est plus long que le nb de colonne de la table


getTabProp();


/*On rempli le datagrid avec les données (messages) reçus


* lorsque l'on a tout réceptionné */


Console
.WriteLine("allOS: "+allOS
);


Console
.WriteLine("cpu: "+allCPU
);


//c'est qd j'ajoute cette ligne qu'apparaît l'erreur: pourtant la table a été déclarer dans la classe
tProp
.Rows
.Add(new Object
[] {cliReceived
, "", "", allOS
,"",allCPU
,""});//les vides c parce ke //g pas encore tt initialisé


}


catch(Exception E)


{


MessageBox.Show("Erreur: "+E.Message+" "+E.Source);


}


}


}else{


MessageBox
.Show("erreur: pas de paquets");


}


}


catch(SocketException E
)


{


MessageBox
.Show("Message(s) reçu(s)"+E
.Message
);


}


}


}


}


}//end while


}


catch


{


Thread
.CurrentThread
.Abort();


}


}
0
Rejoignez-nous