RDLC常规例子是
新建一个Winform 页面
拖一个ReportViewer控件到上面.
再用 报表向导 从数据库中指定一个表一路默认.这个时候会生成 DataSet1.xsd
在这个DataSet1.xsd中针对你选择的表定义了一些DataSet等对象的结构.
然后针对 ReportViewer 指定这个报表.同时刷新绑定数据源.
图表就可以出来了.
![](https://i-blog.csdnimg.cn/blog_migrate/2a7a2aaaf6c3fb08ffa239abdec7316d.jpeg)
针对这个例子
我们可以修改数据源
DataTable dt = new DataTable();
dt.Columns.Add("USER_ID");
dt.Columns.Add("Role_ID");
dt.Columns.Add("USER_NAME");
DataRow dr = dt.NewRow();
dr[0] = "1";
dr[1] = "31";
dr[2] = "aaa";
dt.Rows.Add(dr);
Microsoft.Reporting.WinForms.ReportDataSource reportDataSource2 = new
Microsoft.Reporting.WinForms.ReportDataSource("aaa",dt);
this.ReportViewer1.LocalReport.DataSources.Add(reportDataSource2);
this.ReportViewer1.RefreshReport();
"aaa" 这个名字不需要为原来的名字,只需要和RDLC文件(用XML方式打开)中的
<DataSets>
<DataSet Name="aaa">
以及
<Table Name="table1">
<DataSetName>aaa</DataSetName>
一致就行了.
同时在 DataTable 中存在的列,你需要手动修改到RDLC文件(用XML方式打开)中的
<DataSets>
<DataSet Name="aaa">
<Fields>
<Field Name="ROLE_ID">
<DataField>ROLE_ID</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
<Field Name="USER_NAME">
<DataField>USER_NAME</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Field Name="USER_ID">
<DataField>USER_ID</DataField>
<rd:TypeName>System.Decimal</rd:TypeName>
</Field>
</Fields>
<Query>
<DataSourceName>ConnectionString</DataSourceName>
<CommandText> </CommandText>
<rd:UseGenericDesigner>true</rd:UseGenericDesigner>
</Query>
中即可.
当然 在RDLC设计页面(VS默认打开).指定的Field也需要是DataTabe中的列.
这样 就不再需要DataSet1.xsd文件了, 同时也方便了字段的修改.也不需要报表链接数据库了.
![](https://i-blog.csdnimg.cn/blog_migrate/a528d19445c4c0122e7bb7cd4de68f42.png)
有点乱, 权当自己记录下.