Quelque chose peut être amélioré dans votre code.
(1) Habituellement, nous utilisons une variable minuscule i
dans la boucle.
(2) N'utilisez pas les noms de colonne directement dans votre code. Supposons un jour, le nom de la colonne est changé de "isDefault" à "DefaultOrNot" (juste un exemple), c'est un cauchemar parce que vous avez besoin de modifier les chaînes partout dans votre code. Une énumération est utile ici.
enum TableColumns //well, it's a bad name
{
ID = 0,
Name = 1,
IsDefault = 2
}
et visitez votre cellule de table avec table.Rows[0][(int)TableColumns.IsDefault]
. Vous devez modifier le enum
uniquement si des colonnes sont ajoutées ou modifiées.
(3) Je pense que l'exception de format est due à ce que la valeur de la cellule est T/F
au lieu de True/False
. Donc, la conversion au type bool
entraînera une exception de format.
(4) Vous feriez mieux de vérifier s'il existe une valeur dans cette cellule avant de l'utiliser.
EDIT: stockez-vous la valeur dans DB avec 1/0
(1 pour true et 0 pour false)? Vous devez donc utiliser:
object cell = table.Rows[0]["IsDefault"];
if (cell != null && !Convert.IsDBNull(cell))
{
if (cell.ToString().Equals("1"))
{
//do something
}
}
J'ai fait comme vous l'avez dit ... maintenant il est dit "System.InvalidCastException: Object ne peut pas être cast de DBNull à d'autres types. " – Serenity
@Serenity: Vérifiez la réponse mise à jour :) –
J'ai changé comme vous l'avez dit..still m'a donné l'erreur "String n'a pas été reconnu comme un booléen valide." Il n'y avait que 4 enregistrements dans ma table avec la valeur IsDEfault comme nulle..J'ai supprimé ces lignes et l'erreur a disparu..Pourquoi a-t-il donné une erreur même après avoir ajouté cette condition pour vérifier si IsDefault est! = Null? – Serenity