ReportViewer从DataTable报告

时间:2010-07-09 07:49:20

标签: c# reportviewer report

我想知道是否有办法从SQL查询中为ReportViewer设计报表。那么从SQL查询中我得到报告所需的所有数据,然后在设计器中设计报告?

我对ReportViewer很新,我很困惑。现在我可以看到我可以从向导填充DataSet,但是据我所知,没有办法在那里抛出SQL查询然后从那里进行设计。

我想要的是什么,还是我必须使用DataGridView?我真的想使用reportviewer,因为打印/导出支持。有没有关于这个问题的文献?

2 个答案:

答案 0 :(得分:1)

如果您使用的是LocalReport ClassreportViewer.LocalReport)而不是SSRS(一切都可以在那里点击),则链接中会有一个示例。

ReportDataSource Class具有接受DataTable对象的构造函数。

您只需设计报告并将数据集添加到RDL文件中。

修改:将数据集插入xml,如下所示:

<DataSources>
    <DataSource Name="MyDataSource">
      <ConnectionProperties>
        <ConnectString />
        <DataProvider>SQL</DataProvider>
      </ConnectionProperties>
    </DataSource>
    ...
</DataSources>

<DataSets>
    <DataSet Name="MyDataSet">
      <Query>
        <CommandText>MyDataSet</CommandText>
        <DataSourceName>MyDataSource</DataSourceName>
      </Query>
      <Fields>
        <Field Name="Id">
          <DataField>ID</DataField>
        </Field>
        <Field Name="SomeOtherField">
          <DataField>SOME_OTHER_FIELD</DataField>
        </Field>
      </Fields>
   </DataSet>
</DataSets>

答案 1 :(得分:1)

首先,它取决于您使用的是本地报告还是服务器报告(SQL Server Reporting Services)。两者都可以在ReportViewer控件中显示。

对于服务器报告,事情很简单。该报告包含数据源,您可以选择使用SQL语句或现有存储过程。

对于本地报道,事情有点困难。您必须设计包含数据的类型化数据集。这可以像往常一样填充(SQL命令,存储过程等)。然后,您可以将此数据集的实例分配给报表的数据源。

请注意,虽然服务器报告允许您过滤数据,但在使用本地报告时,您必须自己编写一些过滤功能。