C# problème indexoutofrangeexception

Résolu
dinier Messages postés 12 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 13 septembre 2010 - 22 mai 2009 à 14:29
dinier Messages postés 12 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 13 septembre 2010 - 24 mai 2009 à 19:34
Bonjour,
j'ai un problème lorsque j'ai un service qui n'a pas d'employé, j'ai un message d'erreur que l'exception n'est pas gérée et que l'index -1 n'a pas de valeur, serviceemploye est le nom de la liaison entre les deux tables, j'aimerai que lorsque je vais sur un service qui n'a pas d'employé, qu'il n'affiche rien dans employé.
Voici le code où est généré l'eurreur :
DataRowView rowView = this.BindingContext[dbDs, "tp1_service.serviceemploye"].Currentas DataRowView;

Merci

6 réponses

cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
22 mai 2009 à 22:13
Bonsoir,

En C#, comme dans les autres langages, avant d'acceder à une valeur d'un tableau par son index, il faut vérifier de l'index soit valide.
c'est donc à toi de tester si des informations sont présentes ou non.
Tu peux aussi trapper l'exception pour afficher une vue vide.

C# is amazing, enjoy it!
3
dinier Messages postés 12 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 13 septembre 2010
22 mai 2009 à 23:00
Je ne sais pas comment on fait, je voudrais afficher une vue vide, je sais que cela vient de ce bout de code car je l'ai enlevé et cela fonctionnait mais j'en ai besoin pour gérer un radio. J'ai oublié de préciser que j'ai fait un dataset. Je suis débutant en C#.
3
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
23 mai 2009 à 23:17
Bonsoir,
plutôt que d'enlever le code, encadre-le par un try-catch

DataRowView rowView=null;
try
{
DataRowView rowView = this.BindingContext[dbDs, "tp1_service.serviceemploye"].Currentas DataRowView;
}
catch {}
if (rowView != null)
{
  // là tu ajoutes ton code qui va gerer les données de rowView
}

C# is amazing, enjoy it!
3
dinier Messages postés 12 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 13 septembre 2010
24 mai 2009 à 00:30
Bonsoir, merci beaucoup, j'ai un peu adapté car il me mettait une erreur car déjà déclaré pour DataRowView rowView = this.BindingContext[dbDs, "tp1_service.serviceemploye"].Current as DataRowView;
J'ai mis ceci:
try

{

rowView =

this.BindingContext[dbDs,
"tp1_service.serviceemploye"].Current
as
DataRowView;}

catch {}

if (rowView !=
null){

if ((
bool)rowView.Row[
"sexe"] ==
true)

this.rb_masculin.Checked =
true;

else

this.rb_feminin.Checked =
true;}

else{

this.rb_masculin.Checked =
true;}
3

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

Posez votre question
cs_Robert33 Messages postés 834 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 14 janvier 2017 33
24 mai 2009 à 19:26
Re,
Ho oui la deuxieme déclaration dans le try, erreur de débuttant, autant pour moi ;-)

C# is amazing, enjoy it!
3
dinier Messages postés 12 Date d'inscription dimanche 15 août 2010 Statut Membre Dernière intervention 13 septembre 2010
24 mai 2009 à 19:34
Re,
Ce n'est pas grave.
3
Rejoignez-nous