RDLC报表 中略去XSD文件的支持

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文件了, 同时也方便了字段的修改.也不需要报表链接数据库了.

有点乱, 权当自己记录下.

posted @ 2010-02-02 11:41  破刀  阅读(1512)  评论(2编辑  收藏  举报