Casting Eval ("bitValue") als Bool

8

Ich habe eine Listenansicht mit einem HyperLink-Steuerelement innerhalb der ItemTemplate. Ich möchte den Link anzeigen, wenn ein zurückgegebener Wert 0 (falsch) ist, und den Link nicht anzeigen, wenn es 1 (wahr) ist.

Bisher habe ich das:

%Vor%

... aber dies macht die Ausnahme 'Angegebener Cast ist nicht gültig'.

Beispiele, die ich woanders gesehen habe, sollten funktionieren. Ich kann bestätigen, dass die gesperrte Spalte nur 0 oder 1 (von SQL Server) zurückgibt - sicherlich sollten diese leicht von Bit / Int in Boole umgewandelt werden?

    
CJM 11.08.2010, 17:38
quelle

3 Antworten

16

Wenn Locked ein Int ist, sollten Sie Folgendes tun:

%Vor%

Aber dann sollte das auch funktionieren, also gibt es True zurück wenn Locked & gt; 0

%Vor%

Egal, es wird erwähnt, dass Locked 0 oder 1 enthält. Es ist noch ein INT , das aus irgendeinem Grund Werte & gt; 1. Daher finde ich es gut, den Check auf == 0 statt == 1 zu machen. Wir wissen nicht, wofür Locked verwendet wird und in Zukunft könnte sich das Design ändern, so dass Locked einen Wert & gt; 1.

    
Jeroen 11.08.2010, 17:44
quelle
10

SQL ist eine seltsame Welt, in der Bits drei Zustände 0, 1 und null haben können! Das bedeutet also, dass Eval("Locked") ein booler Typ ist, bei dem eine Nullable ausgeführt werden kann, und nicht ein einfacher bool Eine Umwandlung in bool ist nicht gültig, wenn der Bitwert null ist. Sie müssen dies zuerst überprüfen:

%Vor%

Dies setzt voraus, dass null zu false zugeordnet werden sollte.

    
Gnomo 11.08.2010 17:57
quelle
6
%Vor%     
joohitha 21.04.2014 10:05
quelle

Tags und Links