Condividi tramite


Metodo LocalReport.Render (String, String, CreateStreamCallback, Warning )

Elabora il report e ne esegue il rendering nel formato specificato utilizzando il flusso restituito da una funzione di richiamata.

Spazio dei nomi: Microsoft.Reporting.WinForms
Assembly: Microsoft.ReportViewer.WinForms (in microsoft.reportviewer.winforms.dll)

Sintassi

'Dichiarazione
Public Sub Render ( _
    format As String, _
    deviceInfo As String, _
    createStream As CreateStreamCallback, _
    <OutAttribute> ByRef warnings As Warning() _
)
'Utilizzo
Dim instance As LocalReport
Dim format As String
Dim deviceInfo As String
Dim createStream As CreateStreamCallback
Dim warnings As Warning()

instance.Render(format, deviceInfo, createStream, warnings)
public void Render (
    string format,
    string deviceInfo,
    CreateStreamCallback createStream,
    [OutAttribute] ref Warning[] warnings
)
public:
void Render (
    String^ format, 
    String^ deviceInfo, 
    CreateStreamCallback^ createStream, 
    [OutAttribute] array<Warning^>^% warnings
)
public void Render (
    String format, 
    String deviceInfo, 
    CreateStreamCallback createStream, 
    /** @attribute OutAttribute() */ /** @ref */ Warning[] warnings
)
JScript does not support passing value-type arguments by reference.

Parametri

  • format
    Formato in cui eseguire il rendering del report. Questo argomento esegue il mapping a un'estensione per il rendering. I formati supportati sono EMF, PDF ed Excel.
  • deviceInfo
    Stringa XML che include il contenuto specifico della periferica necessario per l'estensione per il rendering specificata nel parametro relativo al formato. Per ulteriori informazioni sulle impostazioni relative alle informazioni sulla periferica per specifici formati di output, vedere "Device Information Settings" (informazioni in lingua inglese) nella documentazione relativa a SQL Server 2005 Reporting Services.
  • createStream
    Funzione di delegato CreateStreamCallback da utilizzare per l'implementazione di un oggetto Stream per il rendering.
  • warnings
    [out] Matrice di oggetti Warning che descrive gli avvisi generati durante l'elaborazione del report.

Note

Questo metodo accetta una funzione di delegato CreateStreamCallback nell'argomento createStreamCallback per il supporto della gestione personalizzata dei flussi secondari. È inoltre utile per la stampa.

Esempio

Nel frammento di codice seguente viene illustrato l'utilizzo del metodo Render con una funzione di richiamata CreateStreamCallback.

Imports System.IOImports System.DataImports System.TextImports System.Drawing.ImagingImports System.Drawing.PrintingImports System.Collections.GenericImports Microsoft.Reporting.WinFormsPublic Class Demo    Implements IDisposable    private m_currentPageIndex As Integer    private m_streams As IList(Of Stream)    Private Function LoadSalesData() As DataTable        Dim dataSet As New DataSet()        dataSet.ReadXml("data.xml")        Return dataSet.Tables(0)    End Function    Private Function CreateStream(name As String, _         fileNameExtension As String, _              encoding As Encoding, mimeType As String, _                  willSeek As Boolean) As Stream        Dim stream As Stream = New FileStream(name + "." +  fileNameExtension, FileMode.Create)        m_streams.Add(stream)        Return stream    End Function    Private Sub Export(report As LocalReport)        Dim deviceInfo As string = _          "<DeviceInfo>" + _          "  <OutputFormat>EMF</OutputFormat>" + _          "  <PageWidth>8.5in</PageWidth>" + _          "  <PageHeight>11in</PageHeight>" + _          "  <MarginTop>0.25in</MarginTop>" + _          "  <MarginLeft>0.25in</MarginLeft>" + _          "  <MarginRight>0.25in</MarginRight>" + _          "  <MarginBottom>0.25in</MarginBottom>" + _          "</DeviceInfo>"        Dim warnings() As Warning = Nothing        m_streams = New List(Of Stream)()        report.Render("Image", deviceInfo, _              AddressOf CreateStream, warnings)        Dim stream As Stream        For Each stream In m_streams            stream.Position = 0        Next    End Sub    Private Sub PrintPage(sender As Object, ev As PrintPageEventArgs)        Dim pageImage As New Metafile(m_streams(m_currentPageIndex))        ev.Graphics.DrawImage(pageImage, ev.PageBounds)              m_currentPageIndex += 1        ev.HasMorePages = (m_currentPageIndex < m_streams.Count)    End Sub    Private Sub Print()        Const printerName As String = "Microsoft Office Document Image Writer"        If m_streams Is Nothing Or m_streams.Count = 0 Then            Return        End If         Dim printDoc As New PrintDocument()        printDoc.PrinterSettings.PrinterName = printerName        If Not printDoc.PrinterSettings.IsValid Then            Dim msg As String = String.Format(_                 "Can't find printer ""{0}"".", printerName)            Debug.WriteLine(msg)            Return        End If        AddHandler printDoc.PrintPage, AddressOf PrintPage        printDoc.Print()    End Sub    Private Sub Run()        Dim report As LocalReport = new LocalReport()        report.ReportPath = "Report.rdlc"        report.DataSources.Add(new ReportDataSource("Sales", LoadSalesData()))        Export(report)        m_currentPageIndex = 0        Print()    End Sub    Public Overloads Sub Dispose() Implements IDisposable.Dispose        If Not (m_streams Is Nothing) Then            Dim stream As Stream            For Each stream In m_streams               stream.Close()            Next            m_streams = Nothing        End If    End Sub    Public Shared Sub Main(args as string())        Using demo As Demo = new Demo()            demo.Run()        End Using    End SubEnd Class
using System;using System.IO;using System.Data;using System.Text;using System.Drawing.Imaging;using System.Drawing.Printing;using System.Collections.Generic;using Microsoft.Reporting.WinForms;public class Demo : IDisposable{    private int m_currentPageIndex;    private IList<Stream> m_streams;    private DataTable LoadSalesData()    {        DataSet dataSet = new DataSet();        dataSet.ReadXml("data.xml");        return dataSet.Tables[0];    }    private Stream CreateStream(string name, string fileNameExtension,       Encoding encoding, string mimeType, bool willSeek)    {        Stream stream = new FileStream(name + "." + fileNameExtension,           FileMode.Create);        m_streams.Add(stream);        return stream;    }    private void Export(LocalReport report)    {        string deviceInfo =          "<DeviceInfo>" +          "  <OutputFormat>EMF</OutputFormat>" +           "  <PageWidth>8.5in</PageWidth>" +          "  <PageHeight>11in</PageHeight>" +          "  <MarginTop>0.25in</MarginTop>" +          "  <MarginLeft>0.25in</MarginLeft>" +          "  <MarginRight>0.25in</MarginRight>" +          "  <MarginBottom>0.25in</MarginBottom>" +          "</DeviceInfo>";        Warning[] warnings;        m_streams = new List<Stream>();        report.Render("Image", deviceInfo, CreateStream, out warnings);        foreach (Stream stream in m_streams)            stream.Position = 0;    }    private void PrintPage(object sender, PrintPageEventArgs ev)    {        Metafile pageImage =           new Metafile(m_streams[m_currentPageIndex]);        ev.Graphics.DrawImage(pageImage, 0, 0);        m_currentPageIndex++;        ev.HasMorePages = (m_currentPageIndex < m_streams.Count);    }    private void Print()    {        const string printerName =           "Microsoft Office Document Image Writer";        if (m_streams == null || m_streams.Count == 0)            return;        PrintDocument printDoc = new PrintDocument();         printDoc.PrinterSettings.PrinterName = printerName;        if (!printDoc.PrinterSettings.IsValid)        {            string msg = String.Format("Can't find printer \"{0}\".",               printerName);            Debug.WriteLine(msg);            return;        }        printDoc.PrintPage += new PrintPageEventHandler(PrintPage);        printDoc.Print();    }    private void Run()    {        LocalReport report = new LocalReport();        report.ReportPath = "Report.rdlc";        report.DataSources.Add(new ReportDataSource("Sales", LoadSalesData()));        Export(report);        m_currentPageIndex = 0;        Print();    }    public void Dispose()    {        if (m_streams != null)        {            foreach (Stream stream in m_streams)                stream.Close();            m_streans = null;        }    }    public static int Main(string[] args)     {        using (Demo demo = new Demo())        {            demo.Run();        }        return 0;    }}

Vedere anche

Riferimento

Classe LocalReport
Membri LocalReport
Spazio dei nomi Microsoft.Reporting.WinForms