分享

VS2010 rdlc报表 一个报表如何显示多个数据源

 牛人的尾巴 2016-03-31
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")


指定的时候选中表或文本框,不能选中表达式,点右键出现属性对话框,在这里面把各自需要的数据源指定。如下图:这是数据表的属性框,在数据源属性里,出现了两个实例名。怎么两个都是Colls,是不是写错了,是不是应该如下
ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSetColl1", Colls));


//这儿绑定了两个数据源实例,一个叫DataSetColl1,另一个叫DataSetColl,虽然他们用的是一个数据源。 

ReportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WebForms.ReportDataSource("DataSetColl", Colls2)); 直接在这里说明好啦,不想写博客了,
右键rdlc报表--打开方式--XML(文本)编辑器,进行手动添加,用XML打开后内容如下:
 <DataSets>
    <DataSet Name="Ftransfer">
      <Fields>
        <Field Name="stcode">
          <DataField>stcode</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="rowno">
          <DataField>rowno</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="cinvcode">
          <DataField>cinvcode</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="cinvcname">
          <DataField>cinvcname</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="cinvstd">
          <DataField>cinvstd</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="intb">
          <DataField>intb</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="st01">
          <DataField>st01</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="lotnumber1">
          <DataField>lotnumber1</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="st02">
          <DataField>st02</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="lotnumber2">
          <DataField>lotnumber2</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
        <Field Name="remark1">
          <DataField>remark1</DataField>
          <rd:TypeName>System.String</rd:TypeName>
        </Field>
      </Fields>
      <Query>
        <DataSourceName>FDataSet1</DataSourceName>
        <CommandText>/* Local Query */</CommandText>
      </Query>
      <rd:DataSetInfo>
        <rd:DataSetName>FDataSet1</rd:DataSetName>
        <rd:SchemaPath>D:\ERP编程\海纳管理软件\KAIERP\FDataSet1.xsd</rd:SchemaPath>
        <rd:TableName>Ftransfer</rd:TableName>
        <rd:TableAdapterFillMethod />
        <rd:TableAdapterGetDataMethod />
        <rd:TableAdapterName />
      </rd:DataSetInfo>
    </DataSet>
反正是按照XML的编辑方式,自己写啦,保存,回到RDLC报表,打开工具箱的,拖一个列表工具到报表上,查看Datasetname 属性,会发现有自己添加的数据源,这个时候,自己添加想要的数据源即可. 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多