Bedingte Logik in der ASP.net-Seite

8

Ich habe einen Code, der Datenbankwerte in ein Repeater-Steuerelement auf einer asp.net-Seite ausgibt. Einige der zurückgegebenen Werte sind jedoch null / leer - und das Ergebnis sieht hässlich aus, wenn Leerzeichen vorhanden sind.

Wie machen Sie bedingte Logik in asp.net-Steuerelementen, d. h. drucken Sie einen Wert aus, wenn einer existiert, sonst gehen Sie einfach zum nächsten Wert.

Ich sollte auch hinzufügen - dass ich möchte, dass das Markup auch bedingt ist, als ob es keinen Wert gäbe. Ich möchte auch kein
-Tag.

Hier ist ein Codeschnipsel, um die Art der Werte zu zeigen, die ich von meiner Datenbank bekomme. (Es ist üblich, dass Adresse 2 überhaupt keinen Wert hat.)

%Vor%

Vielen Dank

    
Vidar 15.12.2008, 12:07
quelle

5 Antworten

6

Es wird ein ziemlich subjektives sein, da es völlig davon abhängt, wo und wie Sie mit Null / Leerwerten umgehen wollen, und in der Tat, mit welchem ​​von beiden Sie es zu tun haben.

Einige behandeln zum Beispiel Nullen auf Datenbankebene, andere codieren Standardwerte in der Business-Logik-Ebene und andere behandeln Standardwerte / leere Werte auf der Benutzeroberfläche - ganz zu schweigen von der Fülle an Optionen dazwischen.

Wie auch immer, meine persönliche Entscheidung wäre, sicherzustellen, dass auf UI-Ebene keine Daten für dieses Feld verfügbar sind, um Verwirrung zu vermeiden. Im schlimmsten Fall etwas nach dem Motto:

%Vor%

Auf diese Weise weiß der Benutzer zumindest, dass keine Daten verfügbar sind, anstatt zu wissen, ob ein System- / Verwaltungsfehler aufgetreten ist.

Hoffe das hilft:)

    
Matt Woodward 15.12.2008, 12:32
quelle
8

Ich empfehle, jedes Schlüssel / Wert-Paar in ein benutzerdefiniertes Steuerelement mit zwei Eigenschaften zu integrieren. Dieses Steuerelement wird nur angezeigt, wenn der Wert nicht leer ist:

%Vor%

Und dann Steuerelemente in Repeater-Vorlage:

%Vor%     
Ihar Voitka 15.12.2008 13:56
quelle
3

Es gibt verschiedene Möglichkeiten, dies zu tun. Normalerweise verwende ich das Ereignis OnItemDataBound des Repeater-Ereignisses, das auftritt, wenn das Element des Repeaters an ein Datenelement gebunden ist.

Um das OnItemDataBound-Ereignis zu erklären, nehmen wir an, dass wir einen Repeater mit einem Feld haben, das immer angezeigt wird (Name) und ein optionales Feld, das angezeigt wird, wenn es nicht null ist (Optional). Darüber hinaus möchten wir einige vordefinierte Werte anzeigen, wenn das optionale Feld null oder leer ist.
Um dies zu tun, müssen wir zuerst das OnItemDataBound-Ereignis des Repeaters auf eine Methode zeigen und auch die Repeater-Elementvorlage erstellen. Wir könnten jedes Server-Steuerelement in der Elementvorlage des Repeaters verwenden, auf die wir später in der OnItemDataBound-Methode verweisen können.

%Vor%

Nehmen wir weiter an, dass wir eine Sammlung von einfachen Objekten mit zwei Eigenschaften binden werden: Name und Option wie folgt:

%Vor%

Als nächstes implementieren wir die repeaterResult_ItemDataDataBound-Methode wie folgt:

%Vor%

Wenn die obige Methode implementiert ist, werden wir das optionale Feld anzeigen, wenn es existiert, und wenn das optionale Feld Null oder eine leere Zeichenfolge ist, wird die vordefinierte Zeichenfolge "Nicht eingegeben!" angezeigt.

    
Aleksandar 15.12.2008 12:38
quelle
1

Sie können IsDBNull (obj)

verwenden %Vor%     
Jeff.Crossett 15.12.2008 12:36
quelle
0

Mir ist klar, dass dies eine sehr alte Frage ist, aber ich möchte hinzufügen, dass der beste Weg, dieses Problem zu lösen, eher auf der Datenbankebene liegt, und ja - ich weiß, dass das OP keinen Typ angegeben hat der Datenquelle.

Ich werde einfach annehmen (ja - von dir und mir), dass die aktuelle Sprache mindestens Transact SQL ist.

Zu diesem Zweck tendiere ich dazu, die Datenquelle zu verwenden, um zusammengesetzte Felder zu erzeugen. Im Falle einer Adresse wird ISNULL glücklich getestet um zu sehen, welche Felder verwendet werden, und einen Standardwert zurückgeben, wenn ein NULL-Feld gefunden wird. Darüber hinaus können Trennzeichen enthalten sein, um Zeilenumbrüche im Ziel-Ausgabemedium zu ermöglichen. Eine Option besteht darin, Komma + ein Leerzeichen als Trennzeichen ', ' zu verwenden.

%Vor%

Dies funktioniert, indem NULL gegen sich selbst verwendet wird - das Hinzufügen zu NULL gibt eine NULL zurück, daher enthält der zurückgegebene Wert entweder unser Komma + Leerzeichen oder es wird eine leere Zeichenfolge zurückgegeben.

Ähnliches kann getan werden, um Microsoft Access dazu zu bringen, Ihr Adressfeld zu erzeugen ...

%Vor%

In diesem Fall konvertiert das kaufmännische Und das NULL in eine leere Zeichenkette, aber dasselbe gilt auch für das Hinzufügen der Zeichenkette zum Feld NULL .

So, jetzt können wir unsere Adresse richtig im HTML ausgeben ...

%Vor%     
Paul 20.02.2018 14:29
quelle

Tags und Links