2010-07-08 4 views
4

Je suis en train de faire ce qui suit pour asp.net combobox:ASP.NET liaison avec EVAL

Text='<%# IIf(Eval("Name").ToString().Equals(""), Bind("Other"), Bind("Name") %>' 

Ce que je suis en train de faire est si la colonne « Name » est vide lie alors à " Autre "colonne, sinon lier à la colonne" Nom ". Tout le monde connaît la bonne syntaxe, continuez à obtenir l'objet non défini à la référence

Je fais cela dans VB.Net.

Merci,
Jim

+0

peut-être l'un des champs est nul, c'est la raison pour laquelle vous obtenez cette erreur. – hallie

+0

quelle version de .NET ciblez-vous? 2, 3,5 ou 4? – Tommy

+0

Je cible la version 2 – Joe

Répondre

0

Essayez

Text='<%# IIf(Eval("Name").Equals(DBNull.Value), Eval("Other") , Eval("Name")) %>' 
+0

La référence d'objet n'est pas définie sur une instance d'un objet. J'ai cette erreur? colonne peut contenir Null, comment dois-je faire face à cela? – Joe

+0

vous devez faire quelque chose comme Eval ("Nom") .Egal (DBNull.Value), dans C# il y a une fonction string.IsNullOrEmpty ... pas sûr avec VB. – hallie

+0

J'ai fait quelques modifications, mais je ne l'ai pas testé ... essayez simplement – hallie

4

Essayez cette (Edited)

Text='<%# If(Not Eval("Name").ToString.Length = 0, Eval("Name") , Eval("Other")) %>' 

Si cela ne fonctionne pas, alors vous pourriez avoir à construire un code derrière la méthode

Text='<%# RetrieveName(Eval("Name"),Eval("Other"))' 

code Derrière

Public Function RetrieveName(Byval name As String?, Byval other As String?) As String 
    If Not String.IsDBNull(name) Then 
    return name 
    ElseIf String.IsDBNull(name) AndAlso Not String.IsDBNull(other) Then 
    return other 
    Else 
    return String.Empty 
    End If 
End Function 
+0

Ok je vais l'essayer maintenant – Joe

+0

La conversion du type 'DBNull' en type 'String' n'est pas valide. – Joe

+0

ah objet non défini à une instance – Joe