Tester une cell d'un datagridview est vide [Résolu]

olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 17:31 - Dernière réponse : olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 22:16
Bonjour

Je cherche toujours la maniere efficace de tester si une cellule d'un datagridview est vide !!

Contexte

A chaque rowenter, je prends une valeur d'une cellulle dans une colonne du dgv
Mais quand j'arrive sur la derniere row vide crak il m'insulte
Le debugger me dis que cRow.Cells["X"].Value vaut {}
Je contourne en faisant des bricolage pas possible mais j'aimerais connaitre une maniere efficace de tester !!

Voici mon code

      DataGridViewRow cRow; 
      cRow = dgv_chauff.Rows[RowIndex];
      if (null == cRow.Cells["X"].Value)
      {
        return;
      }
      pa.X = (int)cRow.Cells["X"].Value;
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
oximoron
Messages postés
149
Date d'inscription
mercredi 23 juillet 2003
Dernière intervention
30 janvier 2009
- 20 févr. 2008 à 21:33
3
Merci
N'ai pas peur je parle du TryParse c'est une fonction des classes int, doubles, ...
C'est une fonction qui à un bon rapport en terme de temps d'execution. Qui te renvoi un booléen si il a réussi la conversion et le resultat de cette conversion. De plus dans ton cas c'est critique cette vérif, si l'utilisateur arrive à rentrer autre chose qu'un nombre (ils sont très fort pour ca ) ca plante méchament alors que là tu peut faire le traitement.
Toi Tu confond avec les try catch ...

Merci oximoron 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de oximoron
olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 22:16
1
Merci
Yep !

Merci beaucoup !
Commenter la réponse de olibara
oximoron
Messages postés
149
Date d'inscription
mercredi 23 juillet 2003
Dernière intervention
30 janvier 2009
- 20 févr. 2008 à 20:19
0
Merci
Pourquoi ca n'est pas efficace "if (cRow.Cells["X"].Value == null)" ?
Fait une fonction si ca te dérange CelluleVide(int anIndexCol, int anIndexLigne) qui te renvoi true ou false en testant si la cellule est différent de null et différent de string.empty.
Commenter la réponse de oximoron
olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 20:49
0
Merci
Bonsoir


A mon avis on ne s'est pas bien compris : le code que j'ai montré ne MARCHE PAS : donc n'est pas efficace


Le test passe, je n'ai aucune valeur visible dans ma cell {}


Et je recois une erreur : When casting from a number the value must be less than infinity ???


Mais je dois avouer que ce n'est pas sur le dernier row Vide mais sur un row que j'a ajouté programaticaly sans spécifier de valeur pour X ?


On va me dire tu n'a qu'a .... mais j'aimerais comprendre comment interpreter ce genre de situation qui peut se presenter !


 
Commenter la réponse de olibara
oximoron
Messages postés
149
Date d'inscription
mercredi 23 juillet 2003
Dernière intervention
30 janvier 2009
- 20 févr. 2008 à 20:59
0
Merci
ok j'avais pas compris 

Donc ta cellule.value n'est pas null si il passe le test. Mais c'est quand tu fait quoi que ca plante ? tu peux tester si la cellule est diférente de string.empty ?
Commenter la réponse de oximoron
olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 21:09
0
Merci
Bonsoir,

Apres le test, Je fais ca (qui plante) :

      pa.X = (int)cRow.Cells["X"].Value;

J'avais aussi testé ceci

      if (null == cRow.Cells[4].Value || cRow.Cells["X"].Value=="")
     {
        return;
     }

Mais ca passe a travers ???
Commenter la réponse de olibara
oximoron
Messages postés
149
Date d'inscription
mercredi 23 juillet 2003
Dernière intervention
30 janvier 2009
- 20 févr. 2008 à 21:13
0
Merci
bon tu peux essayer ca :
int lnValCellule;
if(Int.TryParse(cRow.Cells["X"].Value, out lnValCellule)
{
   //c'est ok
}
else
{
   //erreur
}

pa.X = (int)
Commenter la réponse de oximoron
olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 21:15
0
Merci
Caramba !

J'ai trouvé

     if ((null == cRow.Cells[4].Value) || (""==cRow.Cells["X"].Value.ToString()))
    {
       return;
    }

Mais c'est quand meme chipoteux....
Commenter la réponse de olibara
oximoron
Messages postés
149
Date d'inscription
mercredi 23 juillet 2003
Dernière intervention
30 janvier 2009
- 20 févr. 2008 à 21:19
0
Merci
ok, mais il aurait pu raler à la compilation ...
mais c'est quand même pas mal si tu fait quand même le int.tryParse
Commenter la réponse de oximoron
olibara
Messages postés
670
Date d'inscription
dimanche 16 décembre 2007
Dernière intervention
11 mars 2010
- 20 févr. 2008 à 21:26
0
Merci
Bonsoir

Dans ta proposition tu fais un try

Honnetement j'apprends le csharp depuis 3-4 semaines mais je change de trottoir pour eviter les try, j'ai des tres mauvais souvenir des "on error" en Basic, et le concept du try me fait penser a ca

J'avais revu des programmes bourrés de on error qui ne faisaient rien sans que l'on sache pourquoi !!

Mon experience c'est le C ou on apprends a negocier chaque bit et chaque virages dangereux sans attendre la ménagere l'ambulance et le ramasse miette !
Commenter la réponse de olibara

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.