2010-11-23 2 views
1
gebildet
Visible='<%# ((Eval('<%# Eval("IsDefault")%>'))="True" ? Eval("False") : Eval("True"))%>'>> 
+0

Sie können nicht so weit „Eval verschachtelt“ haben, wie ich weiß, . Verwenden Sie das ItemDataBound-Ereignis und setzen Sie stattdessen das Sichtbare in Code, wie Nick vorgeschlagen hat. –

Antwort

1

Edit: Da IsDefault Wahre in der Datenbank ist, dies zu tun eine Hilfsfunktion in Ihrem Code hinter durch die Definition:

// in codebehind 
public string GetIsVisible(bool isDefault) 
{ 
    return (isDefault) ? "false" : "true"; 
} 

// in web form... 
Visible='<%# GetIsVisible(DataBinder.Eval("IsDefault")) %>' 
+0

wenn IsDefault in DB wahr ist dann was wird True! = True ausgewertet? Ich bin verwirrt – Serenity

+0

Wobei x = wahr, (x! = Wahr) würde zu falsch auswerten. Obwohl das jetzt irrelevant ist, weil Sie geklärt haben, dass in Ihrer Frage mit "True" gemeint ist, meinen Sie eigentlich eher einen Booleschen als einen String. – cspolton

3

Ihre Zitate nicht ausgeglichen werden: '<%# ((Eval('

6

Sie haben soeben einen Bool hier wollen, die verschachtelten Anführungszeichen sind, was Sie Fragen berät, versuchen Sie stattdessen:

Visible='<%# Eval("IsDefault") == "True" %>' 

Obwohl, je nachdem, wo Sie dies verwenden, kann es nicht in beide Richtungen erlaubt sein. Zum Beispiel erhalten Sie in einem Server-Tag etwas in der Art von "Kann "<%# Eval("IsDefault") == "True" %>" nicht in einen booleschen Wert konvertieren".

+0

Ich möchte, dass das Steuerelement basierend auf dem IsDefault-Wert angezeigt wird. Link-Schaltfläche wird sichtbar gemacht, wenn IsDEfault nicht wahr ist – Serenity

+0

@Serenity - hat es ein ID, es scheint so, als würden Sie dies in den meisten Fällen aus dem Code-Behind machen wollen (angesichts der Einschränkungen der Tag-Syntax hier) –

+0

Dieser Code setzt nicht sichtbar auf False, wenn IsDefault wahr ist. – cspolton

Verwandte Themen