Anzeigen von Binärdaten in den Datenwebsteuerelementen (C#)
von Scott Mitchell
In diesem Tutorial untersuchen wir die Optionen zum Präsentieren von Binärdaten auf einer Webseite, einschließlich der Anzeige einer Bilddatei und der Bereitstellung eines "Download"-Links für eine PDF-Datei.
Einführung
Im vorherigen Tutorial haben wir die beiden Techniken zum Zuordnen von Binärdaten zu einem zugrunde liegenden Datenmodell der Anwendung untersucht und das FileUpload-Steuerelement verwendet, um Dateien aus einem Browser in das Dateisystem des Webservers hochzuladen. Wir müssen noch nicht sehen, wie die hochgeladenen Binärdaten dem Datenmodell zugeordnet werden. Das heißt, nachdem eine Datei hochgeladen und im Dateisystem gespeichert wurde, muss ein Pfad zur Datei im entsprechenden Datenbankdatensatz gespeichert werden. Wenn die Daten direkt in der Datenbank gespeichert werden, müssen die hochgeladenen Binärdaten nicht im Dateisystem gespeichert, sondern in die Datenbank eingefügt werden.
Bevor wir uns jedoch mit dem Zuordnen der Daten mit dem Datenmodell befassen, sehen wir uns zunächst an, wie die Binärdaten für den Endbenutzer bereitgestellt werden. Die Darstellung von Textdaten ist einfach genug, aber wie sollten Binärdaten dargestellt werden? Dies hängt natürlich vom Typ der Binärdaten ab. Bei Bildern möchten wir das Bild wahrscheinlich anzeigen. Für PDFs, Microsoft Word Dokumente, ZIP-Dateien und andere Arten von Binärdaten ist die Bereitstellung eines Downloadlinks wahrscheinlich geeigneter.
In diesem Tutorial wird erläutert, wie Sie die Binärdaten zusammen mit den zugehörigen Textdaten mithilfe von Datenwebsteuerelementen wie GridView und DetailsView darstellen. Im nächsten Tutorial widmen wir uns dem Zuordnen einer hochgeladenen Datei mit der Datenbank.
Schritt 1: Bereitstellen vonBrochurePath
Werten
Die Picture
Spalte in der Categories
Tabelle enthält bereits Binärdaten für die verschiedenen Kategoriebilder. Insbesondere enthält die Picture
Spalte für jeden Datensatz den binären Inhalt eines körnigen, qualitativ minderwertigen Bitmapbilds mit 16 Farben. Jedes Kategoriebild ist 172 Pixel breit und 120 Pixel hoch und verbraucht etwa 11 KB. Darüber hinaus enthält der binäre Inhalt in der Picture
Spalte einen 78-Byte-OLE-Header, der entfernt werden muss, bevor das Bild angezeigt wird. Diese Headerinformationen sind vorhanden, da die Northwind-Datenbank ihre Wurzeln in Microsoft Access hat. In Access werden Binärdaten mithilfe des OLE-Objektdatentyps gespeichert, der für diesen Header verwendet wird. Vorerst sehen wir, wie Sie die Header aus diesen Bildern mit niedriger Qualität entfernen, um das Bild anzuzeigen. In einem zukünftigen Tutorial erstellen wir eine Schnittstelle zum Aktualisieren einer Kategoriespalte Picture
und ersetzen diese Bitmapbilder, die OLE-Header verwenden, durch entsprechende JPG-Bilder ohne die unnötigen OLE-Header.
Im vorherigen Tutorial haben wir erfahren, wie Sie das FileUpload-Steuerelement verwenden. Daher können Sie dem Dateisystem des Webservers Broschürendateien hinzufügen. Dadurch wird die BrochurePath
Spalte in der Categories
Tabelle jedoch nicht aktualisiert. Im nächsten Tutorial erfahren Sie, wie Sie dies erreichen, aber vorerst müssen wir Werte für diese Spalte manuell bereitstellen.
In diesem Tutorial finden Sie sieben PDF-Broschürendateien im ~/Brochures
Ordner, eine für jede der Kategorien außer Meeresfrüchten. Ich habe es absichtlich weggelassen, eine Seafood-Broschüre hinzuzufügen, um zu veranschaulichen, wie Szenarien behandelt werden, in denen nicht alle Datensätze binärdaten zugeordnet sind. Um die Categories
Tabelle mit diesen Werten zu aktualisieren, klicken Sie mit der rechten Maustaste auf den Categories
Knoten unter Server Explorer, und wählen Sie Tabellendaten anzeigen aus. Geben Sie dann die virtuellen Pfade zu den Broschürendateien für jede Kategorie ein, die über eine Broschüre verfügt, wie Abbildung 1 zeigt. Da es keine Broschüre für die Kategorie Meeresfrüchte gibt, belassen Sie den Wert der BrochurePath
Spalte als NULL
.
Abbildung 1: Manuelles Eingeben der Werte für die Spalte der Categories
Tabelle BrochurePath
(Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Schritt 2: Bereitstellen eines Downloadlinks für die Broschüren in einer GridView
Mit den BrochurePath
für die Categories
Tabelle bereitgestellten Werten können Sie eine GridView erstellen, die jede Kategorie zusammen mit einem Link zum Herunterladen der Broschüre der Kategorie auflistet. In Schritt 4 erweitern wir diese GridView, um auch das Bild der Kategorie anzuzeigen.
Ziehen Sie zunächst eine GridView aus der Toolbox auf die Designer der DisplayOrDownloadData.aspx
Seite im BinaryData
Ordner. Legen Sie die GridView s ID
auf Categories
und über das Smarttag von GridView fest, und wählen Sie aus, um es an eine neue Datenquelle zu binden. Binden Sie es insbesondere an eine ObjectDataSource namens CategoriesDataSource
, die Daten mithilfe der CategoriesBLL
-Methode des Objekts s GetCategories()
abruft.
Abbildung 2: Erstellen eines neuen ObjectDataSource-Namens CategoriesDataSource
(Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Abbildung 3: Konfigurieren der ObjectDataSource für die Verwendung der CategoriesBLL
-Klasse (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Abbildung 4: Abrufen der Liste der Kategorien mithilfe der GetCategories()
-Methode (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Nach Abschluss des Assistenten Zum Konfigurieren von Datenquellen fügt Visual Studio automatisch ein BoundField-Element zur Categories
GridView für CategoryID
, CategoryName
, Description
, NumberOfProducts
und BrochurePath
DataColumn
s hinzu. Entfernen Sie das NumberOfProducts
BoundField, da die Abfrage der GetCategories()
Methode diese Informationen nicht abruft. Entfernen Sie außerdem die CategoryID
BoundField-Eigenschaft, und benennen Sie die CategoryName
BrochurePath
Eigenschaften und BoundFields HeaderText
in Kategorie bzw. Broschüre um. Nachdem Sie diese Änderungen vorgenommen haben, sollte das deklarative Markup Ihres GridView- und ObjectDataSource-Markups wie folgt aussehen:
<asp:GridView ID="Categories" runat="server"
AutoGenerateColumns="False" DataKeyNames="CategoryID"
DataSourceID="CategoriesDataSource" EnableViewState="False">
<Columns>
<asp:BoundField DataField="CategoryName" HeaderText="Category"
SortExpression="CategoryName" />
<asp:BoundField DataField="Description" HeaderText="Description"
SortExpression="Description" />
<asp:BoundField DataField="BrochurePath" HeaderText="Brochure"
SortExpression="BrochurePath" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="CategoriesDataSource" runat="server"
OldValuesParameterFormatString="original_{0}"
SelectMethod="GetCategories" TypeName="CategoriesBLL">
</asp:ObjectDataSource>
Zeigen Sie diese Seite über einen Browser an (siehe Abbildung 5). Jede der acht Kategorien wird aufgeführt. Für die sieben Kategorien mit BrochurePath
Werten wird der BrochurePath
Wert im jeweiligen BoundField angezeigt. Meeresfrüchte, die einen NULL
Wert für ihre BrochurePath
hat, zeigt eine leere Zelle an.
Abbildung 5: Name, Beschreibung und BrochurePath
Wert jeder Kategorie sind aufgelistet (Klicken Sie, um das bild in voller Größe anzuzeigen)
Anstatt den Text der BrochurePath
Spalte anzuzeigen, möchten wir einen Link zur Broschüre erstellen. Entfernen Sie dazu das BrochurePath
BoundField, und ersetzen Sie es durch ein HyperLinkField. Legen Sie die neue HyperLinkField-Eigenschaft HeaderText
auf Brochure, die Text
-Eigenschaft auf Broschüre anzeigen und die DataNavigateUrlFields
-Eigenschaft auf BrochurePath
fest.
Abbildung 6: Hinzufügen eines HyperLinkField für BrochurePath
Dadurch wird eine Spalte mit Links zur GridView hinzugefügt, wie Abbildung 7 zeigt. Wenn Sie auf einen Link Broschüre anzeigen klicken, wird die PDF entweder direkt im Browser angezeigt oder der Benutzer aufgefordert, die Datei herunterzuladen, je nachdem, ob ein PDF-Reader installiert ist und die Einstellungen des Browsers.
Abbildung 7: Eine Broschüre der Kategorie kann angezeigt werden, indem Sie auf den Link Broschüre anzeigen klicken (Klicken Sie hier, um das vollständige Bild anzuzeigen)
Abbildung 8: Die Pdf-Broschüre der Kategorie wird angezeigt (Klicken Sie hier, um das bild in voller Größe anzuzeigen)
Ausblenden des Broschürentexts für Kategorien ohne Broschüre
Wie Abbildung 7 zeigt, zeigt HyperLinkField BrochurePath
seinen Text
Eigenschaftswert ( Broschüre anzeigen ) für alle Datensätze an, unabhängig davon, ob es einen Nicht-WertNULL
für BrochurePath
gibt. Wenn BrochurePath
NULL
ist, wird der Link natürlich nur als Text angezeigt, wie es bei der Kategorie Meeresfrüchte der Fall ist (siehe Abbildung 7). Anstatt den Text Broschüre anzeigen anzuzeigen, kann es schön sein, dass in diesen Kategorien ohne BrochurePath
Wert alternativer Text angezeigt wird, z. B. Keine Broschüre verfügbar.
Um dieses Verhalten bereitzustellen, müssen wir ein TemplateField verwenden, dessen Inhalt über einen Aufruf einer Seitenmethode generiert wird, die die entsprechende Ausgabe basierend auf dem BrochurePath
Wert ausgibt. Diese Formatierungstechnik haben wir zuerst im Tutorial Verwenden von TemplateFields im GridView-Steuerelement untersucht.
Wandeln Sie hyperLinkField in ein TemplateField um, indem Sie hyperLinkField BrochurePath
auswählen und dann im Dialogfeld Spalten bearbeiten auf den Link Dieses Feld in ein TemplateField-Feld konvertieren klicken.
Abbildung 9: Konvertieren des HyperLinkField in ein TemplateField
Dadurch wird ein TemplateField mit einem ItemTemplate
erstellt, das ein HyperLink-Websteuerelement enthält, dessen NavigateUrl
Eigenschaft an den BrochurePath
Wert gebunden ist. Ersetzen Sie dieses Markup durch einen Aufruf der -Methode GenerateBrochureLink
, die den Wert von BrochurePath
übergeben:
<asp:TemplateField HeaderText="Brochure">
<ItemTemplate>
<%# GenerateBrochureLink(Eval("BrochurePath")) %>
</ItemTemplate>
</asp:TemplateField>
Erstellen Sie als Nächstes eine protected
Methode in der CodeBehind-Klasse der ASP.NET Seite namens GenerateBrochureLink
, die ein string
zurückgibt und ein object
als Eingabeparameter akzeptiert.
protected string GenerateBrochureLink(object BrochurePath)
{
if (Convert.IsDBNull(BrochurePath))
return "No Brochure Available";
else
return string.Format(@"<a href="{0}">View Brochure</a>",
ResolveUrl(BrochurePath.ToString()));
}
Diese Methode bestimmt, ob es sich bei object
dem übergebenen Wert um eine Datenbank NULL
handelt, und gibt in diesem Fall eine Meldung zurück, die angibt, dass in der Kategorie keine Broschüre vorhanden ist. Andernfalls wird, wenn ein BrochurePath
Wert vorhanden ist, dieser in einem Link angezeigt. Beachten Sie, dass der BrochurePath
Wert an die -Methode übergeben wird, wenn der ResolveUrl(url)
Wert vorhanden ist. Diese Methode löst die übergebene URL auf und ersetzt das ~
Zeichen durch den entsprechenden virtuellen Pfad. Wenn die Anwendung beispielsweise unter /Tutorial55
gerootet ist, ResolveUrl("~/Brochures/Meats.pdf")
wird zurückgegeben /Tutorial55/Brochures/Meat.pdf
.
Abbildung 10 zeigt die Seite nach der Anwendung dieser Änderungen. Beachten Sie, dass im Feld der Kategorie BrochurePath
"Meeresfrüchte" jetzt der Text Keine Broschüre verfügbar angezeigt wird.
Abbildung 10: Der Text, der keine Broschüre verfügbar ist, wird für Diese Kategorien ohne Broschüre angezeigt (Klicken Sie hier, um das vollständige Bild anzuzeigen)
Schritt 3: Hinzufügen einer Webseite zum Anzeigen eines Bilds der Kategorie
Wenn ein Benutzer eine ASP.NET Seite besucht, erhält er den HTML-Code der ASP.NET Seite. Der empfangene HTML-Code ist nur Text und enthält keine Binärdaten. Alle zusätzlichen Binärdaten wie Bilder, Sounddateien, Macromedia Flash Anwendungen, eingebettete Windows Medienwiedergabe Videos usw. sind als separate Ressourcen auf dem Webserver vorhanden. Der HTML-Code enthält Verweise auf diese Dateien, enthält jedoch nicht den tatsächlichen Inhalt der Dateien.
In HTML wird das <img>
-Element beispielsweise verwendet, um auf ein Bild zu verweisen, wobei das src
Attribut wie folgt auf die Bilddatei verweist:
<img src="MyPicture.jpg" ... />
Wenn ein Browser diesen HTML-Code empfängt, sendet er eine weitere Anforderung an den Webserver, um den binären Inhalt der Bilddatei abzurufen, die dann im Browser angezeigt wird. Das gleiche Konzept gilt für alle Binärdaten. In Schritt 2 wurde die Broschüre nicht als Teil des HTML-Markups der Seite an den Browser gesendet. Stattdessen lieferte der gerenderte HTML-Code Links, die beim Klicken dazu führten, dass der Browser das PDF-Dokument direkt anfordere.
Zum Anzeigen oder Herunterladen von Binärdaten, die sich in der Datenbank befinden, müssen wir eine separate Webseite erstellen, die die Daten zurückgibt. Für unsere Anwendung gibt es nur ein binäres Datenfeld, das direkt in der Datenbank gespeichert ist, das Kategoriebild. Daher benötigen wir eine Seite, die beim Aufruf die Bilddaten für eine bestimmte Kategorie zurückgibt.
Fügen Sie dem Ordner eine neue ASP.NET-Seite mit dem BinaryData
Namen DisplayCategoryPicture.aspx
hinzu. Lassen Sie dabei das Kontrollkästchen Master Seite auswählen deaktiviert. Diese Seite erwartet einen CategoryID
Wert in der Abfragezeichenfolge und gibt die Binärdaten der Spalte dieser Kategorie zurück Picture
. Da diese Seite Binärdaten und nichts anderes zurückgibt, benötigt sie kein Markup im HTML-Abschnitt. Klicken Sie daher in der unteren linken Ecke auf die Registerkarte Quelle, und entfernen Sie das gesamte Markup der Seite mit Ausnahme der <%@ Page %>
-Direktive. Das heißt, DisplayCategoryPicture.aspx
das deklarative Markup sollte aus einer einzelnen Zeile bestehen:
<%@ Page Language="C#" AutoEventWireup="true"
CodeFile="DisplayCategoryPicture.aspx.cs"
Inherits="BinaryData_DisplayCategoryPicture" %>
Wenn das MasterPageFile
Attribut in der <%@ Page %>
-Direktive angezeigt wird, entfernen Sie es.
Fügen Sie in der CodeBehind-Klasse der Seite den folgenden Code zum Page_Load
Ereignishandler hinzu:
protected void Page_Load(object sender, EventArgs e)
{
int categoryID = Convert.ToInt32(Request.QueryString["CategoryID"]);
// Get information about the specified category
CategoriesBLL categoryAPI = new CategoriesBLL();
Northwind.CategoriesDataTable categories =
categoryAPI.GetCategoryWithBinaryDataByCategoryID(categoryID);
Northwind.CategoriesRow category = categories[0];
// Output HTTP headers providing information about the binary data
Response.ContentType = "image/bmp";
// Output the binary data
// But first we need to strip out the OLE header
const int OleHeaderLength = 78;
int strippedImageLength = category.Picture.Length - OleHeaderLength;
byte[] strippedImageData = new byte[strippedImageLength];
Array.Copy(category.Picture, OleHeaderLength,
strippedImageData, 0, strippedImageLength);
Response.BinaryWrite(strippedImageData);
}
Dieser Code beginnt mit dem Lesen des CategoryID
Querystring-Werts in eine Variable mit dem Namen categoryID
. Als Nächstes werden die Bilddaten über einen Aufruf der CategoriesBLL
Klasse s-Methode GetCategoryWithBinaryDataByCategoryID(categoryID)
abgerufen. Diese Daten werden mithilfe der Response.BinaryWrite(data)
-Methode an den Client zurückgegeben, aber bevor dies aufgerufen wird, muss der OLE-Header des Picture
Spaltenwerts entfernt werden. Dies wird erreicht, indem ein byte
Array mit dem Namen strippedImageData
erstellt wird, das genau 78 Zeichen enthält, die kleiner sind als das, was in der Picture
Spalte enthalten ist. Die Array.Copy
-Methode wird verwendet, um die Daten ab category.Picture
Position 78 nach zu strippedImageData
kopieren.
Die Response.ContentType
-Eigenschaft gibt den MIME-Typ des zurückgegebenen Inhalts an, damit der Browser weiß, wie er gerendert werden soll. Da die Spalte der Categories
Picture
Tabelle ein Bitmapbild ist, wird hier der Bitmap-MIME-Typ verwendet (image/bmp). Wenn Sie den MIME-Typ weglassen, zeigen die meisten Browser das Bild weiterhin ordnungsgemäß an, da sie den Typ basierend auf dem Inhalt der Binärdaten der Bilddatei ableiten können. Es ist jedoch ratsam, den MIME-Typ nach Möglichkeit einzuschließen. Eine vollständige Liste der MIME-Medientypen finden Sie auf der Website der Internet Assigned Numbers Authority.
Wenn diese Seite erstellt wurde, kann ein bestimmtes Kategoriebild angezeigt werden, indem Sie besuchen DisplayCategoryPicture.aspx?CategoryID=categoryID
. Abbildung 11 zeigt das Bild der Kategorie "Getränke", das in DisplayCategoryPicture.aspx?CategoryID=1
angezeigt werden kann.
Abbildung 11: Das Bild der Getränkekategorie wird angezeigt (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Wenn Sie beim Besuch DisplayCategoryPicture.aspx?CategoryID=categoryID
von eine Ausnahme mit dem Wert Unable to cast object of type 'System.DBNull' in den Typ 'System.Byte[]' erhalten, gibt es zwei Ursachen. Erstens lässt die Spalte der Categories
Picture
Tabelle Werte zu NULL
. Die DisplayCategoryPicture.aspx
Seite geht jedoch davon aus, dass ein Nicht-WertNULL
vorhanden ist. Auf Picture
die CategoriesDataTable
-Eigenschaft von kann nicht direkt zugegriffen werden, wenn sie über einen NULL
-Wert verfügt. Wenn Sie Werte für die Picture
Spalte zulassen NULL
möchten, sollten Sie die folgende Bedingung einschließen:
if (category.IsPictureNull())
{
// Display some "No Image Available" picture
Response.Redirect("~/Images/NoPictureAvailable.gif");
}
else
{
// Send back the binary contents of the Picture column
// ... Set ContentType property and write out ...
// ... data via Response.BinaryWrite ...
}
Im obigen Code wird davon ausgegangen, dass im Ordner eine Bilddatei mit dem Images
Namen NoPictureAvailable.gif
vorhanden ist, die Sie für diese Kategorien ohne Bild anzeigen möchten.
Diese Ausnahme kann auch verursacht werden, wenn die s-Methode-Anweisung CategoriesTableAdapter
GetCategoryWithBinaryDataByCategoryID
SELECT
wieder in die Standard Spaltenliste der Abfrage zurückgesetzt wurde. Dies kann passieren, wenn Sie AD-hoc-SQL-Anweisungen verwenden und den Assistenten für die TableAdapter-abfrage Standard erneut ausgeführt haben. Überprüfen Sie, ob die GetCategoryWithBinaryDataByCategoryID
Anweisung der Methode die SELECT
Spalte weiterhin enthält Picture
.
Hinweis
Bei jedem Besuch von DisplayCategoryPicture.aspx
wird auf die Datenbank zugegriffen, und die angegebenen Bilddaten der Kategorie werden zurückgegeben. Wenn sich das Bild der Kategorie seit dem letzten Anzeigen des Benutzers nicht geändert hat, ist dies jedoch vergeudeter Aufwand. Glücklicherweise ermöglicht HTTP bedingte GETs. Mit einem bedingten GET sendet der Client, der die HTTP-Anforderung stellt, einen If-Modified-Since
HTTP-Header , der das Datum und die Uhrzeit angibt, zu der der Client diese Ressource zuletzt vom Webserver abgerufen hat. Wenn sich der Inhalt seit diesem angegebenen Datum nicht geändert hat, antwortet der Webserver möglicherweise mit einem Nicht geänderten status-Code (304) und verzichtet auf das Zurücksenden des angeforderten Ressourceninhalts. Kurz gesagt, diese Technik entbindet den Webserver davon, Inhalte für eine Ressource zurückzusenden, wenn sie seit dem letzten Zugriff des Clients nicht geändert wurden.
Um dieses Verhalten zu implementieren, müssen Sie der Tabelle jedoch eine PictureLastModified
Spalte hinzufügen, um zu Categories
erfassen, wann die Picture
Spalte zuletzt aktualisiert wurde, sowie Code, der auf den If-Modified-Since
Header überprüft werden soll. Weitere Informationen zum If-Modified-Since
Header und zum bedingten GET-Workflow finden Sie unter HTTP Conditional GET for RSS Hackers und A More Look at Performing HTTP Requests in an ASP.NET Page.
Schritt 4: Anzeigen der Kategoriebilder in einer GridView
Nachdem wir nun über eine Webseite zum Anzeigen eines bestimmten Kategoriebilds verfügen, können wir es mithilfe des Bildwebsteuerelements oder eines HTML-Elements <img>
anzeigen, das auf DisplayCategoryPicture.aspx?CategoryID=categoryID
zeigt. Bilder, deren URL durch Datenbankdaten bestimmt wird, können mithilfe von ImageField in GridView oder DetailsView angezeigt werden. ImageField enthält DataImageUrlField
Eigenschaften und DataImageUrlFormatString
, die wie die HyperLinkField-Eigenschaften DataNavigateUrlFields
und DataNavigateUrlFormatString
funktionieren.
Erweitern Sie gridView Categories
in DisplayOrDownloadData.aspx
, indem Sie ein ImageField hinzufügen, um jedes Kategoriebild anzuzeigen. Fügen Sie einfach imageField hinzu, und legen Sie dessen DataImageUrlField
Eigenschaften und DataImageUrlFormatString
auf bzwDisplayCategoryPicture.aspx?CategoryID={0}
. festCategoryID
. Dadurch wird eine GridView-Spalte erstellt, die ein <img>
Element rendert, dessen src
Attribut auf verweist DisplayCategoryPicture.aspx?CategoryID={0}
, wobei {0} durch den GridView-Zeilenwert CategoryID
ersetzt wird.
Abbildung 12: Hinzufügen eines ImageFields zu GridView
Nachdem Sie imageField hinzugefügt haben, sollte die deklarative Syntax Von GridView folgendermaßen beruhigend aussehen:
<asp:GridView ID="Categories" runat="server" AutoGenerateColumns="False"
DataKeyNames="CategoryID" DataSourceID="CategoriesDataSource"
EnableViewState="False">
<Columns>
<asp:BoundField DataField="CategoryName" HeaderText="Category"
SortExpression="CategoryName" />
<asp:BoundField DataField="Description" HeaderText="Description"
SortExpression="Description" />
<asp:TemplateField HeaderText="Brochure">
<ItemTemplate>
<%# GenerateBrochureLink(Eval("BrochurePath")) %>
</ItemTemplate>
</asp:TemplateField>
<asp:ImageField DataImageUrlField="CategoryID"
DataImageUrlFormatString="DisplayCategoryPicture.aspx?CategoryID={0}">
</asp:ImageField>
</Columns>
</asp:GridView>
Nehmen Sie sich einen Moment Zeit, um diese Seite über einen Browser anzuzeigen. Beachten Sie, dass jeder Datensatz jetzt ein Bild für die Kategorie enthält.
Abbildung 13: Das Kategoriebild wird für jede Zeile angezeigt (Klicken Sie hier, um das Bild in voller Größe anzuzeigen)
Zusammenfassung
In diesem Tutorial haben wir die Darstellung von Binärdaten untersucht. Wie die Daten dargestellt werden, hängt vom Typ der Daten ab. Für die PDF-Broschürendateien boten wir dem Benutzer einen Link Broschüre anzeigen an, der den Benutzer beim Klicken direkt zur PDF-Datei führte. Für das Kategoriebild haben wir zuerst eine Seite erstellt, auf der die Binärdaten aus der Datenbank abgerufen und zurückgegeben werden. Anschließend haben wir diese Seite verwendet, um jedes Kategoriebild in einem GridView-Objekt anzuzeigen.
Nachdem wir uns nun angesehen haben, wie Binärdaten angezeigt werden, können wir untersuchen, wie ein Einfügen, Aktualisieren und Löschen für die Datenbank mit den Binärdaten ausgeführt werden kann. Im nächsten Tutorial erfahren Sie, wie Sie eine hochgeladene Datei dem entsprechenden Datenbankdatensatz zuordnen. In diesem Tutorial erfahren Sie, wie Sie vorhandene Binärdaten aktualisieren und die Binärdaten löschen, wenn der zugeordnete Datensatz entfernt wird.
Viel Spaß beim Programmieren!
Zum Autor
Scott Mitchell, Autor von sieben ASP/ASP.NET-Büchern und Gründer von 4GuysFromRolla.com, arbeitet seit 1998 mit Microsoft-Webtechnologien. Scott arbeitet als unabhängiger Berater, Trainer und Autor. Sein neuestes Buch ist Sams Teach Yourself ASP.NET 2.0 in 24 Hours. Er kann unter mitchell@4GuysFromRolla.comoder über seinen Blog erreicht werden, der unter http://ScottOnWriting.NETzu finden ist.
Besonderer Dank an
Diese Tutorialreihe wurde von vielen hilfreichen Prüfern überprüft. Hauptprüfer für dieses Tutorial waren Teresa Murphy und Dave Gardner. Möchten Sie meine bevorstehenden MSDN-Artikel lesen? Wenn dies der Fall ist, legen Sie eine Zeile unter abmitchell@4GuysFromRolla.com.
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für