2009-05-05 8 views
2

Weiß jemand, wie kann ich ein Bild in der Datenbank gespeichert und es auf ReportViewer 2008 zeigen?Wie kann ich ein in der Datenbank gespeichertes Bild in Visual Studio ReportViewer 2008 laden?

Danke !!

+0

Große Frage, würde mich interessieren, das selbst zu wissen. Ich benutze SQL 2008 noch nicht, aber ich hoffe, dass alle Antworten auch auf SQL 2000 & SQL 2005 geschrieben werden. – Eppz

+0

Welche Art von Datenquelle verwenden Sie? Lokales oder Remote-Rendering? – cdonner

Antwort

1

Ich mache das gerade, aber es war nicht einfach zu erreichen.

Ich habe eine Klasse erstellt, die RDLC-Dateien in einem MemoryStream generiert. Der RDLC-Speicherstream wird an das reportViewer-Steuerelement gesendet, das wiederum den Bericht anzeigt.

Während der Generierung der RDLC-Datei können Sie ein eingebettetes Bild erstellen. Dazu lade ich das Bild in ein Byte-Array und wandle das Byte-Array in Base64-Codierung um. Die RDLC-Dateien erfordern eine Base64-Codierung, damit Bilder ordnungsgemäß angezeigt werden.

Wieder war es nicht einfach zu erreichen, also wirst du das wirklich tun müssen, um es zu schaffen. Wenn Sie mit dieser Methode fortfahren möchten, kann ich Ihnen weitere Details geben.

EDIT (Mehr Details)

Sie einige Beispiel-Code bekommen, wie man dynamisch RDLC Dateien auf GotReportViewer erstellen. Direkter Link zu Code für VB.NET und C#.

Wenn Sie herausfinden können, wie dieser Code funktioniert, können Sie Ihre RDLC-Dateien generieren und müssen die Dateien nicht manuell erstellen. Auch hier muss ich betonen, dass Sie sehr viel basteln werden, um dorthin zu gelangen, wo Sie sein wollen.

Um Bilder zu generieren, rufen Sie sie jetzt aus der Datenbank ab. Wenn Sie es von der Datenbank zurückbekommen (ich benutze BLOBs), erhalten Sie ein Byte-Array. Das Byte-Array enthält die Daten für das Bild, aber ich kann nicht in seinem aktuellen Zustand verwendet werden. So konvertieren es, können Sie etwas tun:

Dim output As String = "" 
output = Convert.ToBase64String(imgByteArray) 

Die resultierende Ausgabe String wird mit Report kompatibel sein. Jetzt können Sie diese Zeichenfolge dynamisch der RDLC-Datei (XML-Datei) des ReportViewer hinzufügen. Unter Verwendung der Codebeispiele aus GotReportViewer, könnten Sie Folgendes tun:

'Inserts embedded images into the report 
    Overridable Function CreateEmbeddedImages() As Rdl.EmbeddedImagesType 
    Dim bgCell As New Rdl.EmbeddedImageType 
    Dim images As New Rdl.EmbeddedImagesType 

    bgCell.Name = "bgTableHeader" 
    bgCell.Items = New Object() {"image/jpeg", output} 
    bgCell.ItemsElementName = New Rdl.ItemsChoiceType35() {Rdl.ItemsChoiceType35.MIMEType, Rdl.ItemsChoiceType35.ImageData} 

    images.EmbeddedImage = New Rdl.EmbeddedImageType() {bgCell} 
    Return images 

    End Function 

Die RDL Art der Report Definition Language Klassendatei ist. Grundsätzlich ist es ein reverse Engineering RDLC XSD-Schema. Es enthält Klassen, die zum Generieren einer gültigen XML-Datei für Ihre Berichte verwendet werden. Es ist in der GotReportViewer-Verknüpfung oben enthalten, aber Sie können eine selbst mit dem XSD.EXE-Tool mit Visual Studio zur Verfügung stellen.

+0

Bitte, Jon, kannst du mir noch mehr Details geben? – AndreMiranda

Verwandte Themen