Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
von Scott Mitchell
In diesem Tutorial gehen wir schrittweise durch Beispiele, wie wir das Aussehen der DataList- und Repeater-Steuerelemente formatieren, entweder mithilfe von Formatierungsfunktionen innerhalb von Vorlagen oder durch das Bearbeiten des DataBound-Ereignisses.
Einleitung
Wie wir im vorherigen Lernprogramm gesehen haben, bietet die DataList eine Reihe von stilbezogenen Eigenschaften, die sich auf ihre Darstellung auswirken. Insbesondere haben wir gesehen, wie Sie den DataList s HeaderStyle
, , ItemStyle
, AlternatingItemStyle
und SelectedItemStyle
Eigenschaften Standard-CSS-Klassen zuweisen. Zusätzlich zu diesen vier Eigenschaften enthält die DataList eine Reihe weiterer stilbezogener Eigenschaften, wie z. B. Font
, ForeColor
, BackColor
und BorderWidth
, um einige zu nennen. Das Repeater-Steuerelement enthält keine stilbezogenen Eigenschaften. Diese Formatvorlageneinstellungen müssen direkt innerhalb des Markups in den Repeater-Vorlagen vorgenommen werden.
Häufig hängt die Formatierung von Daten jedoch von den Daten selbst ab. Wenn Sie beispielsweise Produkte auflisten, möchten wir möglicherweise die Produktinformationen in einer hellgrauen Schriftfarbe anzeigen, wenn sie nicht mehr vorhanden ist, oder wir möchten den UnitsInStock
Wert hervorheben, wenn er null ist. Wie wir in früheren Lernprogrammen gesehen haben, bieten gridView, DetailsView und FormView zwei verschiedene Möglichkeiten zum Formatieren ihrer Darstellung basierend auf ihren Daten:
-
Das
DataBound
Ereignis erstellt einen Ereignishandler für das entsprechendeDataBound
Ereignis, das ausgelöst wird, nachdem die Daten an jedes Element gebunden wurden (für das GridView war es dasRowDataBound
Ereignis; für dataList und Repeater ist es dasItemDataBound
Ereignis). In diesem Ereignishandler können die soeben gebundenen Daten untersucht und Formatierungsentscheidungen getroffen werden. Wir haben dieses Verfahren im Lernprogramm " Benutzerdefinierte Formatierung basierend auf Daten " untersucht. - Formatierungsfunktionen in Vorlagen bei Verwendung von TemplateFields in den DetailsView- oder GridView-Steuerelementen oder einer Vorlage im FormView-Steuerelement können wir der CodeBehind-Klasse der ASP.NET Seite, der Business Logic Layer oder einer anderen Klassenbibliothek, auf die über die Webanwendung zugegriffen werden kann, eine Formatierungsfunktion hinzufügen. Diese Formatierungsfunktion kann eine beliebige Anzahl von Eingabeparametern akzeptieren, muss jedoch den HTML-Code zurückgeben, der in der Vorlage gerendert werden soll. Formatierungsfunktionen wurden zuerst im Tutorial "Verwendung von TemplateFields im GridView-Steuerelement" untersucht.
Beide Formatierungstechniken sind mit den DataList- und Repeater-Steuerelementen verfügbar. In dieser Anleitung gehen wir Schritt für Schritt durch Beispiele für beide Techniken und beide Steuerelemente.
Verwenden desItemDataBound
Ereignishandlers
Wenn Daten an eine DataList gebunden sind, entweder aus einem Datenquellensteuerelement oder durch programmgesteuertes Zuweisen von Daten zur Eigenschaft des Steuerelements DataSource
und Aufrufen seiner DataBind()
Methode, wird das DataList-Ereignis DataBinding
ausgelöst, die Datenquelle aufgezählt, und jeder Datensatz ist an die DataList gebunden. Für jeden Datensatz in der Datenquelle erstellt die DataList ein DataListItem
Objekt, das dann an den aktuellen Datensatz gebunden ist. Während dieses Prozesses löst die DataList zwei Ereignisse aus.
-
ItemCreated
wird ausgelöst, nachdem dasDataListItem
erstellt wurde -
ItemDataBound
wird ausgelöst, nachdem der aktuelle Datensatz anDataListItem
gebunden wurde.
In den folgenden Schritten wird der Datenbindungsprozess für das DataList-Steuerelement beschrieben.
Das DataList-Ereignis
DataBinding
wird ausgelöst.Die Daten sind an die DataList gebunden.
Für jeden Datensatz in der Datenquelle
- Erstellen eines
DataListItem
-Objekts - Auslösen des Ereignisses
ItemCreated
- Binde den Datensatz an
DataListItem
- Auslösen des Ereignisses
ItemDataBound
- Fügen Sie
DataListItem
zurItems
Sammlung hinzu
- Erstellen eines
Beim Binden von Daten an das Repeater-Steuerelement schreitet es durch die exakt gleiche Abfolge von Schritten fort. Der einzige Unterschied besteht darin, dass der Repeater anstelle von erstellten DataListItem
Instanzen RepeaterItem
verwendet.
Hinweis
Der aufmerksame Leser hat möglicherweise eine leichte Anomalie zwischen der Abfolge der Schritte bemerkt, die auftreten, wenn die DataList und der Repeater an Daten gebunden sind, im Gegensatz dazu, wenn die GridView an Daten gebunden ist. Am Ende des Datenbindungsprozesses löst GridView das DataBound
Ereignis aus. Weder das DataList-Steuerelement noch das Repeater-Steuerelement weisen ein solches Ereignis auf. Dies liegt daran, dass die DataList- und Repeater-Steuerelemente im ASP.NET 1.x-Zeitrahmen erstellt wurden, bevor das "Vorher- und Nachher-Ereignishandlermuster" gebräuchlich wurde.
Wie bei gridView besteht eine Option zum Formatieren basierend auf den Daten darin, einen Ereignishandler für das ItemDataBound
Ereignis zu erstellen. Dieser Ereignishandler prüft die gerade an das DataListItem
oder RepeaterItem
gebundenen Daten und wirkt sich bei Bedarf auf die Formatierung des Steuerelements aus.
Für das DataList-Steuerelement können Formatierungsänderungen für das gesamte Element mithilfe der DataListItem
formatbezogenen Eigenschaften implementiert werden, darunter die Standard Font
, ForeColor
, BackColor
, CssClass
und so weiter. Um die Formatierung bestimmter Websteuerungselemente innerhalb der DataList-Vorlage zu beeinflussen, müssen wir programmatisch auf diese Websteuerungselemente zugreifen und deren Stil ändern. Wir haben gesehen, wie dies im Lernprogramm " Benutzerdefinierte Formatierung basierend auf Daten " wieder möglich ist. Wie das Repeater-Steuerelement verfügt die RepeaterItem
Klasse über keine formatbezogenen Eigenschaften. Daher müssen alle an einem RepeaterItem
Ereignishandler ItemDataBound
vorgenommenen Formatvorlagenänderungen programmgesteuert auf Websteuerelemente innerhalb der Vorlage zugreifen und diese aktualisieren.
Da die ItemDataBound
Formatierungstechnik für DataList und Repeater nahezu identisch ist, konzentriert sich unser Beispiel auf die Verwendung der DataList.
Schritt 1: Anzeigen von Produktinformationen in der DataList
Bevor wir uns gedanken über die Formatierung machen, erstellen wir zunächst eine Seite, die eine DataList zum Anzeigen von Produktinformationen verwendet. Im vorherigen Lernprogramm haben wir eine DataList erstellt, in der der Name, die Kategorie, der Lieferant, die Menge pro Einheit und der Preis jedes Produkts angezeigt wurden. Lassen Sie uns diese Funktionalität hier in diesem Lernprogramm wiederholen. Zu diesem Zweck können Sie entweder die DataList und seine ObjectDataSource von Grund auf neu erstellen, oder Sie können diese Steuerelemente von der Seite kopieren, die im vorherigen Lernprogramm erstellt wurde (Basics.aspx
) und sie in die Seite für dieses Lernprogramm einfügen (Formatting.aspx
).
Nachdem Sie die DataList- und ObjectDataSource-Funktionalität von Basics.aspx
in Formatting.aspx
eins repliziert haben, nehmen Sie sich einen Moment Zeit, um die DataList-Eigenschaft ID
von DataList1
in ein aussagekräftigeres ItemDataBoundFormattingExample
zu ändern. Zeigen Sie als Nächstes die DataList in einem Browser an. Wie in Abbildung 1 dargestellt, besteht der einzige Formatierungsunterschied zwischen jedem Produkt darin, dass sich die Hintergrundfarbe wechselt.
Abbildung 1: Die Produkte werden im DataList-Steuerelement aufgelistet (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
In diesem Lernprogramm formatieren wir die DataList so, dass alle Produkte mit einem Preis unter 20,00 $ sowohl den Namen als auch den Einzelpreis gelb hervorgehoben haben.
Schritt 2: Programmgesteuertes Ermitteln des Werts der Daten im ItemDataBound-Ereignishandler
Da nur diese Produkte mit einem Preis unter 20,00 $ die benutzerdefinierte Formatierung angewendet haben, müssen wir in der Lage sein, jeden Produktpreis zu bestimmen. Beim Binden von Daten an eine DataList listet die DataList die Datensätze in der Datenquelle auf und erstellt für jeden Datensatz eine DataListItem
Instanz, die den Datenquellendatensatz an die DataListItem
Datenquelle bindet. Nachdem die Daten des jeweiligen Datensatzes an das aktuelle DataListItem
Objekt gebunden wurden, wird das DataList-Ereignis ItemDataBound
ausgelöst. Wir können einen Ereignishandler für dieses Ereignis erstellen, um die Datenwerte für den aktuellen DataListItem
zu prüfen und basierend auf diesen Werten alle Formatierungsänderungen erforderlich zu machen.
Erstellen Sie ein ItemDataBound
Ereignis für die DataList, und fügen Sie den folgenden Code hinzu:
protected void ItemDataBoundFormattingExample_ItemDataBound
(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
// Programmatically reference the ProductsRow instance bound
// to this DataListItem
Northwind.ProductsRow product =
(Northwind.ProductsRow)((System.Data.DataRowView)e.Item.DataItem).Row;
// See if the UnitPrice is not NULL and less than $20.00
if (!product.IsUnitPriceNull() && product.UnitPrice < 20)
{
// TODO: Highlight the product's name and price
}
}
}
Das Konzept und die Semantik hinter dem DataList-Ereignishandler ItemDataBound
sind zwar identisch mit denen, die vom GridView-Ereignishandler RowDataBound
im Lernprogramm " Benutzerdefinierte Formatierung basierend auf Daten " verwendet werden, die Syntax unterscheidet sich geringfügig. Wenn das ItemDataBound
Ereignis feuert, werden die an Daten gebundenen DataListItem
über e.Item
an den entsprechenden Ereignishandler übergeben (anstelle von e.Row
, wie beim Ereignishandler des GridViews RowDataBound
). Der DataList-Ereignishandler ItemDataBound
wird für jede Zeile ausgelöst, die der DataList hinzugefügt wird, einschließlich Kopfzeilen, Fußzeilenzeilen und Trennzeilen. Die Produktinformationen sind jedoch nur an die Datenzeilen gebunden. Daher müssen wir bei Verwendung des ItemDataBound
Ereignisses, um die an die DataList gebundenen Daten zu prüfen, zuerst sicherstellen, dass wir mit einem Datenelement arbeiten. Dies kann erreicht werden, indem Sie die DataListItem
Eigenschaft s ItemType
überprüfen, die einen der folgenden acht Werte aufweisen kann:
AlternatingItem
EditItem
Footer
Header
Item
Pager
SelectedItem
Separator
Sowohl Item
als auch AlternatingItem``DataListItem
bilden die Datenelemente der DataList. Angenommen, wir arbeiten mit einer Item
oder AlternatingItem
, wir greifen auf die tatsächliche ProductsRow
Instanz zu, die an die aktuelle DataListItem
Instanz gebunden wurde. Die DataListItem
DataItem
-Eigenschaft enthält einen Verweis auf das DataRowView
-Objekt, dessen Row
-Eigenschaft einen Verweis auf das tatsächliche ProductsRow
-Objekt bereitstellt.
Als Nächstes überprüfen wir die Eigenschaft der ProductsRow
Instanz UnitPrice
. Da das Feld der Tabelle "Products" UnitPrice
Werte zulässt, sollten wir zunächst überprüfen, ob die NULL
-Eigenschaft einen UnitPrice
Wert hat, indem wir die NULL
Methode verwenden. Wenn der UnitPrice
Wert nicht NULL
ist, überprüfen wir, ob er kleiner als 20,00 $ ist. Wenn es tatsächlich unter 20,00 $ liegt, müssen wir die benutzerdefinierte Formatierung anwenden.
Schritt 3: Hervorheben des Produktnamens und des Preises
Sobald wir wissen, dass der Preis eines Produkts weniger als 20,00 $ beträgt, bleibt nur noch, seinen Namen und Preis hervorzuheben. Um dies zu erreichen, müssen wir zunächst programmgesteuert auf die Label-Steuerelemente im ItemTemplate
verweisen, die den Namen und den Preis des Produkts anzeigen. Als Nächstes müssen sie einen gelben Hintergrund anzeigen. Diese Formatierungsinformationen können angewendet werden, indem die Eigenschaften der Labels BackColor
direkt geändert werden (LabelID.BackColor = Color.Yellow
); im Idealfall sollten jedoch alle anzeigebezogenen Aspekte durch Cascading Stylesheets ausgedrückt werden. Tatsächlich verfügen wir bereits über ein Stylesheet, das die gewünschte Formatierung bereitstellt, die in Styles.css
- AffordablePriceEmphasis
dem Lernprogramm " Benutzerdefinierte Formatierung basierend auf Daten " erstellt und erläutert wurde.
Wenn Sie die Formatierung anwenden möchten, legen Sie einfach die Eigenschaften der beiden Label-Websteuerelemente CssClass
auf AffordablePriceEmphasis
fest, wie im folgenden Code dargestellt:
// Highlight the product name and unit price Labels
// First, get a reference to the two Label Web controls
Label ProductNameLabel = (Label)e.Item.FindControl("ProductNameLabel");
Label UnitPriceLabel = (Label)e.Item.FindControl("UnitPriceLabel");
// Next, set their CssClass properties
if (ProductNameLabel != null)
ProductNameLabel.CssClass = "AffordablePriceEmphasis";
if (UnitPriceLabel != null)
UnitPriceLabel.CssClass = "AffordablePriceEmphasis";
Nachdem der ItemDataBound
Ereignishandler abgeschlossen wurde, rufen Sie die Formatting.aspx
Seite erneut in einem Browser auf. Wie in Abbildung 2 dargestellt, haben diese Produkte mit einem Preis unter 20,00 $ sowohl ihren Namen als auch ihren Preis hervorgehoben.
Abbildung 2: Diese Produkte kleiner als 20,00 $ sind hervorgehoben (Klicken Sie, um das Bild in voller Größe anzuzeigen)
Hinweis
Da die DataList als HTML <table>
gerendert wird, verfügen ihre DataListItem
Instanzen über formatbezogene Eigenschaften, die festgelegt werden können, um eine bestimmte Formatvorlage auf das gesamte Element anzuwenden. Wenn wir beispielsweise das gesamte Element gelb hervorheben möchten, wenn der Preis kleiner als 20,00 $ ist, könnten wir den Code, der auf die Bezeichnungen verweist, durch die folgende Codezeile ersetzen und deren CssClass
Eigenschaften festlegen: e.Item.CssClass = "AffordablePriceEmphasis"
(siehe Abbildung 3).
Die RepeaterItem
, aus denen das Repeater-Steuerelement besteht, bieten jedoch keine solchen stilorientierten Eigenschaften. Daher erfordert das Anwenden von benutzerdefinierter Formatierung auf den Repeater die Zuweisung von Stil-Eigenschaften zu den Websteuerelementen innerhalb der Vorlagen des Repeaters, so wie wir es in Abbildung 2 gemacht haben.
Abbildung 3: Das gesamte Produktelement ist für Produkte unter 20,00 $ hervorgehoben (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Verwenden von Formatierungsfunktionen aus der Vorlage
Im Lernprogramm "Using TemplateFields" im GridView Control-Lernprogramm haben wir erfahren, wie Sie eine Formatierungsfunktion in einem GridView TemplateField verwenden, um benutzerdefinierte Formatierungen basierend auf den Daten anzuwenden, die an die Zeilen von GridView gebunden sind. Eine Formatierungsfunktion ist eine Methode, die aus einer Vorlage aufgerufen werden kann, und gibt den HTML-Code zurück, der an seiner Stelle ausgegeben werden soll. Formatierungsfunktionen können sich in der codeBehind-Klasse der ASP.NET Seite befinden oder in Klassendateien im App_Code
Ordner oder in einem separaten Klassenbibliotheksprojekt zentralisiert werden. Das Verschieben der Formatierungsfunktion aus der CodeBehind-Klasse der ASP.NET Seite ist ideal, wenn Sie die gleiche Formatierungsfunktion in mehreren ASP.NET Seiten oder in anderen ASP.NET Webanwendungen verwenden möchten.
Um Formatierungsfunktionen zu veranschaulichen, sollen die Produktinformationen den Text [EINGESTELLT] neben dem Namen des Produkts enthalten, wenn das Produkt eingestellt ist. Lassen Sie uns auch den Preis gelb hervorgehoben haben, wenn er kleiner als 20,00 $ ist (wie im ItemDataBound
Ereignishandlerbeispiel). Wenn der Preis 20,00 $ oder höher ist, lassen Sie uns nicht den tatsächlichen Preis anzeigen, sondern stattdessen den Text, Rufen Sie bitte ein Preisangebot an. Abbildung 4 zeigt einen Screenshot der Artikelauflistung mit diesen Angewendeten Formatierungsregeln.
Screenshot eines DataList-Steuerelements, das Produkte auflistet, wobei der Preis für Produkte, die mehr als 20,00 $ kosten, durch den Text "Bitte kontaktieren Sie uns für ein Preisangebot" ersetzt wird.
Abbildung 4: Für teure Produkte wird der Preis durch den Text ersetzt. Bitte rufen Sie ein Preisangebot auf (Klicken Sie hier, um das Bild mit voller Größe anzuzeigen)
Schritt 1: Erstellen der Formatierungsfunktionen
In diesem Beispiel benötigen wir zwei Formatierungsfunktionen, eine, die den Produktnamen zusammen mit dem Text [EINGESTELLT], bei Bedarf anzeigt, und eine andere, die entweder einen hervorgehobenen Preis anzeigt, wenn er kleiner als 20,00 $ ist, oder den Text, bitte rufen Sie andernfalls ein Preisangebot an. Erstellen wir diese Funktionen in der codeBehind-Klasse der ASP.NET Seite und benennen sie DisplayProductNameAndDiscontinuedStatus
und DisplayPrice
. Beide Methoden müssen den HTML-Code zurückgeben, um als Zeichenfolge gerendert zu werden, und beide müssen markiert Protected
(oder Public
) werden, um aus dem deklarativen Syntaxteil der ASP.NET Seite aufgerufen werden zu können. Der Code für diese beiden Methoden folgt:
protected string DisplayProductNameAndDiscontinuedStatus
(string productName, bool discontinued)
{
// Return just the productName if discontinued is false
if (!discontinued)
return productName;
else
// otherwise, return the productName appended with the text "[DISCONTINUED]"
return string.Concat(productName, " [DISCONTINUED]");
}
protected string DisplayPrice(Northwind.ProductsRow product)
{
// If price is less than $20.00, return the price, highlighted
if (!product.IsUnitPriceNull() && product.UnitPrice < 20)
return string.Concat("<span class=\"AffordablePriceEmphasis\">",
product.UnitPrice.ToString("C"), "</span>");
else
// Otherwise return the text, "Please call for a price quote"
return "<span>Please call for a price quote</span>";
}
Beachten Sie, dass die DisplayProductNameAndDiscontinuedStatus
Methode die Werte der productName
Felder und discontinued
Datenfelder als skalare Werte akzeptiert, während die DisplayPrice
Methode eine ProductsRow
Instanz akzeptiert (anstelle eines unitPrice
skalaren Werts). Beide Ansätze werden funktionieren; wenn die Formatierungsfunktion jedoch mit skalaren Werten arbeitet, die Datenbankwerte NULL
enthalten können (wie z. B. UnitPrice
; weder ProductName
noch Discontinued
erlauben NULL
Werte), muss besondere Vorsicht bei der Behandlung dieser skalaren Eingaben walten.
Insbesondere muss der Eingabeparameter vom Typ Object
sein, da der eingehende Wert eine DBNull
Instanz anstelle des erwarteten Datentyps sein kann. Darüber hinaus muss eine Überprüfung durchgeführt werden, um festzustellen, ob es sich bei dem eingehenden Wert um einen Datenbankwert NULL
handelt. Wenn wir also möchten, dass die DisplayPrice
Methode den Preis als Skalarwert akzeptiert, müssen wir den folgenden Code verwenden:
protected string DisplayPrice(object unitPrice)
{
// If price is less than $20.00, return the price, highlighted
if (!Convert.IsDBNull(unitPrice) && ((decimal) unitPrice) < 20)
return string.Concat("<span class=\"AffordablePriceEmphasis\">",
((decimal) unitPrice).ToString("C"), "</span>");
else
// Otherwise return the text, "Please call for a price quote"
return "<span>Please call for a price quote</span>";
}
Beachten Sie, dass der unitPrice
Eingabeparameter vom Typ Object
ist und dass die bedingte Anweisung geändert wurde, um festzustellen, ob unitPrice
DBNull
ist oder nicht. Da der unitPrice
Eingabeparameter als Object
Kennung übergeben wird, muss er in einen Dezimalwert umgewandelt werden.
Schritt 2: Aufrufen der Formatierungsfunktion aus der DataList s ItemTemplate
Mit den unserer Code-Behind-Klasse der ASP.NET-Seite hinzugefügten Formatierungsfunktionen bleibt nur noch, diese Formatierungsfunktionen von der DataList's ItemTemplate
aufzurufen. Um eine Formatierungsfunktion aus einer Vorlage aufzurufen, platzieren Sie den Funktionsaufruf in der Datenbindungssyntax:
<%# MethodName(inputParameter1, inputParameter2, ...) %>
In der DataList ItemTemplate
zeigt das ProductNameLabel
Label-Web-Steuerelement derzeit den Namen des Produkts an, indem seiner Text
-Eigenschaft das Ergebnis von <%# Eval("ProductName") %>
zugewiesen wird. Damit der Name und der Text [EINGESTELLT] angezeigt werden, aktualisieren Sie die deklarative Syntax bei Bedarf, damit sie stattdessen der Text
Eigenschaft den Wert der DisplayProductNameAndDiscontinuedStatus
Methode zuweist. Dabei müssen wir den Namen des Produkts und nicht mehr vorhandene Werte mithilfe der Eval("columnName")
Syntax übergeben.
Eval
gibt einen Wert vom Typ zurück Object
, aber die DisplayProductNameAndDiscontinuedStatus
Methode erwartet Eingabeparameter vom Typ String
und Boolean
; daher müssen wir die von der Eval
Methode zurückgegebenen Werte in die erwarteten Eingabeparametertypen umwandeln, z. B.:
<h4>
<asp:Label ID="ProductNameLabel" runat="server"
Text='<%# DisplayProductNameAndDiscontinuedStatus((string) Eval("ProductName"),
(bool) Eval("Discontinued")) %>'>
</asp:Label>
</h4>
Um den Preis anzuzeigen, können wir einfach die Eigenschaft „UnitPriceLabel
Label“ Text
auf den Wert festlegen, der von der DisplayPrice
Methode zurückgegeben wird, genau wie wir es beim Anzeigen des Produktnamens und des Textes „[EINGESTELLT]“ gemacht haben. Anstatt jedoch den UnitPrice
skalaren Eingabeparameter zu übergeben, übergeben wir stattdessen die gesamte ProductsRow
Instanz:
<asp:Label ID="UnitPriceLabel" runat="server"
Text='<%# DisplayPrice((Northwind.ProductsRow)
((System.Data.DataRowView) Container.DataItem).Row) %>'>
</asp:Label>
Wenn die Aufrufe der Formatierungsfunktionen vorhanden sind, nehmen Sie sich einen Moment Zeit, um unseren Fortschritt in einem Browser anzuzeigen. Ihr Bildschirm sollte ähnlich aussehen wie in Abbildung 5, wobei die eingestellten Produkte mit dem Text [EINGESTELLT] versehen sind und Produkte, deren Preis über 20,00 $ liegt, durch den Text Bitte rufen Sie für ein Preisangebot an ersetzt werden.
Abbildung 5: Für teure Produkte wird der Preis durch den Text ersetzt. Bitte rufen Sie ein Preisangebot an (Klicken Sie hier, um das Bild mit voller Größe anzuzeigen)
Zusammenfassung
Das Formatieren des Inhalts eines DataList- oder Repeater-Steuerelements basierend auf den Daten kann mit zwei Techniken erfolgen. Die erste Technik besteht darin, einen Ereignishandler für das ItemDataBound
Ereignis zu erstellen, der ausgelöst wird, wenn jeder Datensatz in der Datenquelle mit einer neuen DataListItem
oder RepeaterItem
verbunden wird.
ItemDataBound
Im Ereignishandler können die Daten des aktuellen Elements untersucht werden, und anschließend kann die Formatierung auf den Inhalt der Vorlage oder bei DataListItem
s auf das gesamte Element selbst angewendet werden.
Alternativ können benutzerdefinierte Formatierungen über Formatierungsfunktionen realisiert werden. Eine Formatierungsfunktion ist eine Methode, die aus den Vorlagen "DataList" oder "Repeater" aufgerufen werden kann, die den HTML-Code zurückgibt, der an seiner Stelle ausgegeben werden soll. Häufig wird der von einer Formatierungsfunktion zurückgegebene HTML-Code durch die Werte bestimmt, die an das aktuelle Element gebunden werden. Diese Werte können an die Formatierungsfunktion übergeben werden, entweder als skalare Werte oder durch Übergeben des gesamten Objekts, das an das Element gebunden wird (z. B. die ProductsRow
Instanz).
Glückliche Programmierung!
Zum Autor
Scott Mitchell, Autor von sieben ASP/ASP.NET Büchern und Gründer von 4GuysFromRolla.com, arbeitet seit 1998 mit Microsoft Web Technologies zusammen. Scott arbeitet als unabhängiger Berater, Trainer und Schriftsteller. Sein neuestes Buch ist Sams Teach Yourself ASP.NET 2.0 in 24 Stunden. Er kann bei mitchell@4GuysFromRolla.comerreicht werden.
Besonderer Dank an
Diese Lernprogrammreihe wurde von vielen hilfreichen Prüfern überprüft. Leitende Prüfer für dieses Lernprogramm waren Yaakov Ellis, Randy Schmidt und Liz Shulok. Möchten Sie meine bevorstehenden MSDN-Artikel überprüfen? Wenn dies der Fall ist, schreiben Sie mir eine Nachricht an mitchell@4GuysFromRolla.com.