Menerapkan antarmuka IRenderingExtension

Ekstensi penyajian mengambil hasil dari definisi laporan yang dikombinasikan dengan data aktual dan merender data yang dihasilkan ke format yang dapat digunakan. Transformasi data gabungan dan pemformatan dilakukan dengan menggunakan kelas runtime bahasa umum (CLR) yang mengimplementasikan IRenderingExtension. Ini mengubah model objek menjadi format output yang dapat dikonsumsi oleh penampil, printer, atau target output lainnya.

IRenderingExtension memiliki tiga metode yang harus dikodekan:

Bagian berikut membahas metode ini secara lebih rinci.

Metode render

Metode Render berisi argumen yang mewakili objek berikut:

  • Laporan yang ingin Anda render. Objek ini berisi properti, data, dan informasi tata letak untuk laporan. Laporan adalah akar pohon model objek laporan.

  • ServerParameters yang berisi objek kamus string, dengan parameter untuk server laporan, jika ada.

  • Parameter deviceInfo yang berisi pengaturan perangkat. Untuk informasi selengkapnya, lihat Meneruskan pengaturan informasi perangkat ke ekstensi rendering.

  • Parameter clientCapabilities yang berisi NameValueCollection objek kamus yang memiliki informasi tentang klien yang Anda render.

  • Parameter RenderProperties yang berisi informasi tentang hasil penyajian.

  • createAndRegisterStream adalah fungsi delegasi yang akan dipanggil untuk mendapatkan aliran yang akan dirender.

parameter deviceInfo

Parameter deviceInfo berisi parameter penyajian, bukan parameter laporan. Parameter penyajian ini diteruskan ke ekstensi penyajian. Nilai deviceInfo dikonversi menjadi NameValueCollection objek oleh server laporan. Item dalam parameter deviceInfo diperlakukan sebagai nilai yang tidak peka huruf besar/kecil. Jika permintaan render muncul sebagai hasil dari akses URL, parameter URL dalam formulir rc:key=value dikonversi ke pasangan kunci/nilai di objek kamus deviceInfo . Kode deteksi browser juga menyediakan item berikut dalam kamus clientCapabilities : EcmaScriptVersion, JavaScript, MajorVersion, MinorVersion, Win32, Type, dan AcceptLanguage. Ekstensi penyajian mengabaikan pasangan nama/nilai apa pun dalam parameter deviceInfo yang tidak dipahaminya. Sampel kode berikut menunjukkan metode sampel GetRenderingResource yang mengambil ikon:

public void GetRenderingResource (CreateStream createStreamCallback, NameValueCollection deviceInfo)  
{  
    string[] iconTagValues = deviceInfo.GetValues("Icon");  
    if ((iconTagValues != null) && (iconTagValues.Length > 0) )  
    {  
        // Create a stream to output to.  
        Stream outputStream = createStreamCallback(m_iconResourceName, "gif", null, "image/gif", false);  
        // Get the GIF image for one of the buttons on the toolbar  
        Image requiredImage = (Image) m_resourcemanager.GetObject(m_iconResourceName  
        // Write the image to the output stream  
        requiredImage.Save(outputStream, requiredImage.RawFormat);  
    }  
    return;  
}  

Metode RenderStream

Metode ini RenderStream merender aliran tertentu dari laporan. Semua aliran dibuat selama panggilan awal Render , tetapi aliran awalnya tidak dikembalikan ke klien. Metode ini digunakan untuk aliran sekunder, seperti gambar dalam penyajian HTML, atau halaman lain dari ekstensi penyajian multi-halaman, seperti Gambar/EMF.

Metode GetRenderingResource

Metode ini GetRenderingResource mengambil informasi tanpa mengeksekusi seluruh penyajian laporan. Ada kalanya laporan memerlukan informasi yang tidak mengharuskan laporan itu sendiri dirender. Misalnya, jika Anda memerlukan ikon yang terkait dengan ekstensi penyajian, gunakan parameter deviceInfo yang berisi Ikon> tag <tunggal. Dalam kasus ini, Anda dapat menggunakan metode .GetRenderingResource