آشنایی با کنترل Report Viewer در ASP.Net

در این پست قصد داریم به صورت گام به گام و با یک مثال نحوه استفاده از کنترل Report Viewer را برای نمایش RDLS یا گزارش Local SSRS در ASP.Net را نشان دهیم.

آشنایی با کنترل Report Viewer در ASP.Net

بانک اطلاعاتی

در این برنامه ما از بانک اطلاعاتی رایگان Microsoft’s  Northwind sample database استفاده می کنیم.

1- DataSet را به برنامه ASP.Net Website خود اضافه می کنیم.

از آنجاییکه از RDLC Report بصورت آفلاین استفاده می کنیم، از DataSet برای پر کردن RDLC Report با داده ها از بانک اطلاعاتی استفاده خواهیم کرد.

2- اضافه کردن Data Table به DataSet

گام بعدی ما اضافه کردن یک DataTable به DataSet می باشد.

3- اضافه کردن ستون یا فیلد به DataTable

در DataTable نیاز داریم که نام ستون هایی را که می خواهیم در RDLC Report نشان دهیم را تعیین کنیم.

به این نکته توجه داشته باشد که نام ستون ها در DataTable باید دقیقا با نام ستون ها در بانک اطلاعاتی مطابقت داشته باشد.

بصورت پیشفرض ستون ها از نوع string می باشند ولی می توانیم نوع آنها را طبق نیاز تغییر دهیم.

4- اضافه کردن RDLC Report

از طریق راست کلیک و گزینه ADD New Item یک RDLC Report به برنامه اضافه کنید. ما از Report Wizard استفاده می کنیم بنابراین پیکربندی گزارش را آسان تر می کند.

5- انتخاب DataSet

اکنون نیاز داریم که DataSet را انتخاب کنیم که برای RDLC Report مانند DataSource عمل خواهد کرد. بنابراین Customets DataSet را که ایجاد کردیم را انتخاب می کنیم.

 

6- انتخاب فیلد برای نمایش در RDLC Report

در اینجا نیاز داریم که فیلدهایی را که می خواهیم نمایش دهیم انتخاب کنیم. به آسانی می توانیم هر فیلدی را که می خواهیم درون Values Box که در تصویر نمایان است Drag and Drop می کنیم.

 

7- انتخاب Layout

درمرحله بعد از شما درمورد layout سوال خواهد شد. می توانیم به راحتی از این مرحله گذر کنیم.

8- انتخاب Style

در آخر استایل را انتخاب می کنیم. مانند رنگ، تم و غیره.

هنگامی که در مرحله بالا روی دکمه Finish کلیک می کنیم، Reporter آماده است و در برنامه نشان داده خواهد شد. مانند تصویر زیر.

9- اضافه کردن Report Viewer به صفحه

به منظور نمایش گزارش نیاز به اضافه کردن کنترل ReportViewer در صفحه می باشد. این کنترل در Toolbox می باشد. کنترل ReportViewer نیاز به ScriptManager در صفحه دارد.

هنگامی که کنترل ReportViewer را درصفحه اضافه می کنید، صفحه شما باید مانند زیر باشد.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="RDLC_Report.WebForm1" %>

<%@ Register assembly="Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" namespace="Microsoft.Reporting.WebForms" tagprefix="rsweb" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        <br />
        <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="560">
        </rsweb:ReportViewer>
    
    </div>
    </form>
</body>
</html>

</html>

10- پرکردن RDLC Report از بانک اطلاعاتی

در زیر کدهای مربوط به پر کردن RDLC Report از بانک قرار دارد. دستور اول نشان می دهد که کنترل ReportViewer که گزارش می دهد، از نوع Local Report می باشد. 

سپس مسیر گزارش به ReportViewer داده می شود. پس از آنکه Customer DataSet با رکوردهای Customer Table پر می شود، به عنوان ReportSource برای گزارش قرار می گیرد.

فضای نام (NameSpace)

using System.Data;
using System.Configuration;
using System.Data.SqlClient;
using Microsoft.Reporting.WebForms;
 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ReportViewer1.ProcessingMode = ProcessingMode.Local;
                ReportViewer1.LocalReport.ReportPath = Server.MapPath("~/Report.rdlc");
                Customers dsCustomers = GetData("select top 20 * from customers");
                ReportDataSource datasource = new ReportDataSource("Customers", dsCustomers.Tables[0]);
                ReportViewer1.LocalReport.DataSources.Clear();
                ReportViewer1.LocalReport.DataSources.Add(datasource);
            }
        }

        private Customers GetData(string query)
        {
            string conString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
            SqlCommand cmd = new SqlCommand(query);
            using (SqlConnection con = new SqlConnection(conString))
            {
                using (SqlDataAdapter sda = new SqlDataAdapter())
                {
                    cmd.Connection = con;

                    sda.SelectCommand = cmd;
                    using (Customers dsCustomers = new Customers())
                    {
                        sda.Fill(dsCustomers, "DataTable1");
                        return dsCustomers;
                    }
                }
            }

        }

نکته: همانطور که اشاره شد، در این برنامه از بانک اطلاعاتی Microsoft’s Northwind Database  استفاده کرده ایم. این بانک اطلاعاتی نمونه را می توانید از قست فایل های ضمیمه دانلود کنید.

فایل های ضمیمه