2016-04-29 1 views
0

Mon C code-behind # ressemble à ceci:La syntaxe correcte pour capturer la valeur NULL

if ((DT["BENEFIT_TYPE1"].Equals(0))) 
    { DropDownList_Tracking_BenefitType1.SelectedValue = null; } 
else if ((DT["BENEFIT_TYPE1"].ToString() = "")) 
    { DropDownList_Tracking_BenefitType1.SelectedValue = null; } 
else 
    {DropDownList_Tracking_BenefitType1.SelectedValue = (DT["BENEFIT_TYPE1"].ToString());} 

Le code n'aime pas la ligne "else if"; tout ce qui est à l'intérieur des parens est souligné en rouge. Quand je passe la souris ma souris dessus, le message pop-up est:

Le côté gauche d'une affectation doit être une variable, la propriété ou indexeur

Quelqu'un peut-il me dire comment résoudre ce problème ? J'essaie de rendre compte des valeurs NULL dans mon ensemble de données.

+1

Vous venez de VB.NET? ;-) –

+0

Btw, puisque 'DT' étant un DataRow et que la valeur semble être' NULL' dans la base de données/datatable vous devriez utiliser 'else if (DT.IsNull (" BENEFIT_TYPE1 ")) ... ' –

+0

Comme dit @TimSchmelter, si cela vient de DB, vous devriez le faire ou comparer avec DbNull.Value – Juan

Répondre

4

Comme Juan a souligné, vous avez besoin ==, notez cependant que NULL et "" sont des choses différentes.

Vous pouvez vérifier nullou vide avec:

else if (string.IsNullOrEmpty(DT["BENEFIT_TYPE1"].ToString())) 
3

Il vous manque un caractère '='. En C#, les comparaisons sont faites avec le double signe égal '=='. Un seul signifie assignation, d'où votre erreur comme vous ne pouvez pas l'assigner dans une instruction if.

Essayez:

(DT["BENEFIT_TYPE1"].ToString() == "")) 

Comme d'autres ont suggéré il y a d'autres choses à prendre en compte.

Pour le contrôle des chaînes comme nul ou vide, vous pouvez utiliser les éléments suivants:

string.IsNullOrEmpty(yourString) 

Ou si vous traitez chaîne espace vide comme vide

string.IsNullOrWhitespace(yourString) 

Si DT est un datatable que vous êtes approvisionnement la base de données dans la base des valeurs nulles ne sont pas une chaîne vide ou vide mais DBNull, donc vous devriez comparer cette façon:

DT["field"] == DbNull.Value 

Ou

DT.IsNull("field")