• "RDLC报表"速成指南


    RDLC报表是微软自家的报表,已经集成在vs2010中,相对水晶报表更轻量级,更重要的是:可直接在web项目中使用。

    使用步骤:

    一、创建DataSet

    右击->Add New Item-> DataSet(本例中命名为DS_EMP),会出现以下界面:

    然后右击->Add->DataTable,添加一个表,命名为T_EMP,然后添加二个列EMPNO,EMPNAME均为String型,完成后的样子类似下现这样:

    注:如果机器上安装了BizTalk,DataSet打开后,可能是下面这样

    这种编辑方式我个人觉得不方便,可以通过在DS_EMP.xsd上右击-->Open With,然后在弹出界面中,把DataSet Editor设置成默认编辑器。

    二、创建RDLC报表

    项目右击->Add New Item -> Report,添加报表,命名为Report_EMP.rdlc,这时会出现报表编辑界面,从工具箱中拖一个Table到报表空白区

    这时会弹出一个选择DataSet的界面:

    选择DS_EMP,然后点击"OK"关闭,这时报表布局上会出现一个网格

    注:通常这个界面在绝大多数情况下,Data Source下拉框里并不能识别出当前项目中的数据集。这时,需要在解决方案rdlc文件上右击-->Open With-->XML(Text) Editor,直接编辑rdlc文件(报表rdlc文件其实就是一个xml),然后将以下内容插入到<Body>节点前

    <DataSources>
        <DataSource Name="DS_EMP">
          <ConnectionProperties>
            <DataProvider>System.Data.DataSet</DataProvider>
            <ConnectString>/* Local Connection */</ConnectString>
          </ConnectionProperties>
          <rd:DataSourceID>d01eef15-1518-4df0-a45a-a17d24570e3a</rd:DataSourceID>
        </DataSource>
      </DataSources>
      <DataSets>
        <DataSet Name="T_EMP">
          <Fields>
            <Field Name="EMPNO">
              <DataField>EMPNO</DataField>
              <rd:TypeName>System.String</rd:TypeName>
            </Field>
            <Field Name="EMPNAME">
              <DataField>EMPNAME</DataField>
              <rd:TypeName>System.String</rd:TypeName>
            </Field>
          </Fields>
          <Query>
            <DataSourceName>DS_EMP</DataSourceName>
            <CommandText>/* Local Query */</CommandText>
          </Query>
          <rd:DataSetInfo>
            <rd:DataSetName>DS_EMP</rd:DataSetName>
            <rd:SchemaPath>App_Code\DS_EMP.xsd</rd:SchemaPath>
            <rd:TableName>T_EMP</rd:TableName>
            <rd:TableAdapterFillMethod />
            <rd:TableAdapterGetDataMethod />
            <rd:TableAdapterName />
          </rd:DataSetInfo>
        </DataSet>
      </DataSets>
    

    注: <rd:SchemaPath>App_Code\DS_EMP.xsd</rd:SchemaPath> 这个节点中的SchemePath最好设置成相对路径,否则多人团队开发时,如果其它人跟你本机的物理路径不一致,DataSet定义有变化后(比如新增加了字段),在报表设计的Report Data面板中,无法通过右键->Refresh刷新DataSet.

    然后再以正常方式双击rdlc报表打开即可看到左侧Report Data面板中多了一个数据集

     鼠标定位到单元格上,注意右上角有一个小图标(如上图),点击这个图标,能列出数据集中的字段 

    将需要打印的列依次添加进来

    再稍做些修饰,一个简单的报表设计就算完成了

    三、将报表嵌入到网页中

    创建一个aspx页,拖放一个ReportViewer到页面上,然后再拖放一个ScriptManager到页面上,最终的代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <%@ Register Assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
        Namespace="Microsoft.Reporting.WebForms" TagPrefix="rsweb" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <rsweb:ReportViewer ID="ReportViewer1" runat="server" Width="100%" Height="100%">
            </rsweb:ReportViewer>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            </asp:ScriptManager>
        </div>
        </form>
    </body>
    </html>
    

     同时web.config中也会发生一些变化:

    <?xml version="1.0"?>
    <!--
      For more information on how to configure your ASP.NET application, please visit
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <system.web>
          <httpHandlers>
              <add verb="*" path="Reserved.ReportViewerWebControl.axd" type = "Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
          </httpHandlers>
        <compilation debug="true" targetFramework="4.0">
          <assemblies>
            <add assembly="Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="Microsoft.ReportViewer.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="Microsoft.Build.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
            <add assembly="System.Management, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
          </assemblies>
        </compilation>
        <pages controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"/>
      </system.web>
    </configuration>
    

      主要是system.web/httphandlers 以及 assemblies节点下多了一些内容

    最后在default.aspx.cs里用代码弄点数据出来

    using System;
    using System.Data;
    using Microsoft.Reporting.WebForms;
    
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack) 
            {
                FillDataToReport();
            }
        }
    
        void FillDataToReport() 
        {
            //造一些示例数据
            DataTable dt = new DataTable();
            dt.Columns.Add("EMPNO", typeof(string));
            dt.Columns.Add("EMPNAME", typeof(string));
            dt.Rows.Add("000", "菩提树下的杨过");
            dt.Rows.Add("001", "张三");
            dt.Rows.Add("002", "李四");
            dt.Rows.Add("003", "王五");        
    
            //指定加载哪个报表,并填充数据
            this.ReportViewer1.LocalReport.ReportPath = "Report_EMP.rdlc";
            this.ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("T_EMP", dt));
    
        }
    }
    

     浏览一下页面,就能看到在线报表了:

     

     

  • 相关阅读:
    【java并发编程】ReentrantLock 可重入读写锁
    浏览器上写代码,4核8G微软服务器免费用,Codespaces真香
    【低码】asp.net core 实体类可生产 CRUD 后台管理界面
    深度学习和图形学渲染的结合和应用 Wonder
    Sentinel Dashboard 规则 持久化到Nacos
    一条更新SQL的内部执行及日志模块
    一条Sql的执行过程
    (数据科学学习手札136)Python中基于joblib实现极简并行计算加速
    老板给我安排了个测试环境治理的活
    C# 图片沿中心点进行角度旋转
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/2178579.html
Copyright © 2020-2023  润新知