RDLC常规例子是 新建一个Winform 页面 拖一个ReportViewer控件到上面. 再用 报表向导 从数据库中指定一个表一路默认.这个时候会生成 DataSet1.xsd 在这个DataSet1.xsd中针对你选择的表定义了一些DataSet等对象的结构. 然后针对 ReportViewer 指定这个报表.同时刷新绑定数据源. 图表就可以出来了. ![]() 针对这个例子 我们可以修改数据源 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文件了, 同时也方便了字段的修改.也不需要报表链接数据库了. ![]() 有点乱, 权当自己记录下. |
|