2009-02-17 5 views
1

Normalement, si je lier un ObjectDataSource à un GridView et que j'ai un TemplateColumn qui contient un Eval et qu'il est nul, je peux juste mettre un ".ToString()" cela fonctionne bien . Pour une raison quelconque, cela ne fonctionne pas de la même manière lorsque vous utilisez Linq to SQL. À l'origine, j'utilisais des fichiers XSD pour mon DAL avec un BLL personnalisé. Je l'ai lié à la GridView avec un ObjectDataSource. Je suis en train d'échanger les fichiers XSD avec Linq to SQL et tout fonctionne comme à l'ancienne, à l'exception des colonnes qui peuvent avoir des valeurs Null.Valeurs nulles Linq to SQL dans GridView

Est-ce que quelqu'un a rencontré cela avant et si oui, comment je contourner ce problème?

Répondre

3

La plupart des éléments renvoyés par LINQ sont Nullable types. Donc, dans vos expressions de liaison, vous devez utiliser GetValueOrDefault(). ToString() ou le nouveau "??" opérateur de coalescence null plutôt que tout simplement vieux ToString(). J'espère que ça aide. Cochez cette case à link.

Exemple:

// this will output the int if not null otherwise an empty string. 
<%# (int?)Eval("MyIntegerField") ?? "" %> 
+0

Wow - intéressant! Merci!! – EdenMachine

+0

VB: Si (DirectCast (Eval ("MyIntegerField"), System.Nullable (Of Integer)), "") – EdenMachine

+0

Maintenant, je sais pourquoi j'ai arrêté d'utiliser VB il ya tant d'années! – James