reportviewer动态数据源

来源:互联网 发布:北京网络派出所 编辑:程序博客网 时间:2024/06/06 02:28

1.reportviewer动态数据源

 

DataSet1 a = new DataSet1();
        DataRow dr = a.TABLE2.NewRow();
        dr[0] = 1;
        dr[1] = 2;
        dr[2] = 3;
        a.TABLE2.Rows.Add(dr);
        Microsoft.Reporting.WebForms.ReportDataSource bb = new Microsoft.Reporting

.WebForms.ReportDataSource("DataSet1_TABLE2", a.TABLE2);
        ReportViewer1.LocalReport.DataSources.Clear();
        ReportViewer1.LocalReport.DataSources.Add(bb); 

dataset1是个xsd文件,因为设计报表 的时候一定要个数据源拖拉方便,就会生成个xsd文件

 

 

2.

rdlc与reportviewer联合使用的时候是可以支持多数据源的

在rdlc设计初期需要所有的数据源都已经建立完毕,然后分别将所需要的数据字段放入不同的表中

rdlc使用多数据源时注意:

一张表不能有来自不同数据源的字段(如果要不同的数据源字段绑定到一张表,需要设计一个类似视图的表,将他们作为多数据源表的指定数据源)

不同的表可以有不同的数据源

最后在用reportviewer显示的时候,在智能面板中指定了rdlc报表以后系统会根据rdlc所用到的数据源生成不同的bindingsouce

其后仅需要对不同的bindingsouce进行数据绑定既可

 

3.

1)、如何以代码方式配置多个数据源

public partial class zhenduansuo_a_rdlc : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
         string queryStr="";
         if (Request.QueryString["reportID"] == null)
         {
             Response.Redirect("Default.aspx");
         }
         else
         {
             queryStr = Request.QueryString["reportID"].ToString();
         }
        //mainReportName
        string mainReportName = Request.QueryString["mainReportName"].ToString();

        ReportProcess rp = new ReportProcess();
        DataTable dt = rp.getZhenduansuoAandBData(queryStr);//这是报表的ID
        if (dt.Rows.Count > 0)
        {

            getColl gcoll = new getColl(dt);

            List<DataSetColl> Colls = gcoll.GetCollsAandB();//数据源是我自己定义的
            ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSetColl1", Colls));

              //这儿绑定了两个数据源实例,一个叫DataSetColl1,另一个叫DataSetColl,虽然他们用的是一个数据源
           ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSetColl", Colls));
        }
        else
        {
            mainReportName = "";
            Page.ClientScript.RegisterStartupScript(this.GetType(), "aaccd", "alert('此表中尚没有数据');", true);
        }
        if (mainReportName == "zhenduansuo_a")
        {
            ReportViewer1.LocalReport.ReportPath = Server.MapPath(@"~\RDLC\zhenduansuo_A.rdlc");//必须指定明确的路径地址,不能是URL
        }

}

2)、再看RDLC文件里的单元格里的数据配置

如果一个RDLC文件中只有一个数据源实例,其表达式是这样的:=First(Fields!Danwei.Value),这里没有明确指出数据源实例名,但如果你后来改动了数据源并增加了显示在报表里的项目,则必须要在属性框里看一看是否自动增了数据源实例名,如果数据源实例变成了多个,则需手动指定每个数据单元的数据源实例,否则可以报这样的错误:尚未为数据源“DataSetColl”提供数据源实例。

如果在一个RDLC文件中需要多个数据源实例,则需要象如下一样在双引号里指定

=First(Fields!Danwei.Value, "DataSetColl")

 

指定的时候选中表或文本框,不能选中表达式,点右键出现属性对话框,在这里面把各自需要的数据源指定。如下图:这是数据表的属性框,在数据源属性里,出现了两个实例名。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 增值税普通发票发票联丢失怎么办 纳税识别号错了怎么办 电子发票税号填写错误怎么办 发票抬头名称写错了怎么办 滴滴发票抬头写错了怎么办 普票抬头开错了怎么办 发票号码打错了怎么办 个人税票开错了怎么办 普票地址错了怎么办 专票税率开高了怎么办 专票税率开错了怎么办 发票姓名写错了怎么办 首付发票姓名写错怎么办 一般纳税人税率开错了怎么办 电子税票开错了怎么办 税率是6%开成3%怎么办 医院收费收错了怎么办 发票少打一个字怎么办 增值税发票抬头错了一个字怎么办 暂估入账跨年了怎么办 电子发票写错了怎么办 发票纳税人识别号写错了怎么办 电子发票忘填邮箱怎么办 公司名跟发票抬头不一样怎么办 买空调不给发票怎么办 卖苹果手机没有发票怎么办 刷机字库刷坏了怎么办 维棠不能播放视频怎么办 m3u8卡顿的厉害怎么办 下载了PDF不能用怎么办 pdf格式在电脑打不开怎么办 电脑上arm格式打不开怎么办 极米桌面无响应怎么办 jpg格式的文件打印模糊怎么办 苹果迅雷mp4格式看不了怎么办 太阳镜镜片磨花了怎么办 ∪盘插上电脑读不出怎么办 网站被路由器屏蔽了怎么办 电脑无法进入路由器设置页面怎么办 笔记本电脑无线网卡坏了怎么办 笔记本内置无线网卡坏了怎么办