2010-09-01 5 views
7

J'ai un peu de code que j'ai commencé à gérer, et il commence à échouer en raison de données manquantes dans la base de données. Ce cas pourrait se produire à l'avenir, donc je voudrais gérer gracieusement les nulls dans le frontend.Test de null, inline, sur un appel ASP.net Bind()

Voici le code actuel:

<asp:DropDownList ID="ddlContact" runat="server" 
    SelectedIndex='<%# Bind("contactInfo") == null ? "" : Bind("contactInfo") %>'> 

Il ne semble pas avoir d'effet sur elle, et la page jette encore un NullReferenceException. Il doit être un Bind() en raison de l'exigence de liaison de données bidirectionnelle, donc je ne peux pas utiliser Eval(). Des idées? J'ai essayé d'utiliser l'opérateur null-coallescing "??" mais cela me donne une erreur de compilation indiquant que Bind() n'existe pas dans le contexte actuel. Cela pourrait ressembler à ceci:

<asp:DropDownList ID="ddlContact" runat="server" 
    SelectedIndex='<%# Bind("contactInfo") ?? string.Empty %>'> 

Répondre

2

Vérifiez celui-ci:

Bind NULL

Celui-ci devrait vous donner plus d'idées:

How to handle null values in DataBinder.Eval()

Handling Null Database Values Using Data Source Controls

Lorsque la propriété AppendDataBoundItems est définie sur true, le contrôle DropDownList est rempli avec les éléments statiques et les données générées à partir de la source de données . L'élément de liste statique ajouté au contrôle DropDownList a la propriété Value définie sur une chaîne vide. Avec cela, un élément de données qui contient une valeur null est lié à l'élément de liste statique .

+0

Merci, j'avais vu ce deuxième lien, mais je n'ai pas trouvé ce que je cherchais. Il traitait principalement Eval() et pas Bind(), et pour une raison quelconque, il y a une différence dans la façon dont les nulls sont gérés entre eux. – Carl

+0

En ce qui concerne le premier lien, dès que j'ai entouré Bind entre parenthèses, j'ai reçu l'erreur de compilation "La liaison n'existe pas dans ce contexte". Si étrange. – Carl

+0

Carl: Je pense que vous ne le faites pas correctement. Vous devez traiter la valeur liée en utilisant quelque chose comme une méthode d'événement dans la page code-behind. Là, vous pouvez vérifier si la valeur de contactInfo est nulle, puis affecter une valeur appropriée à SelectedIndex. –

Questions connexes