我是使用报表查看器控件的新手。
我当前创建报告的方式是调用存储过程并插入输入参数来查询数据库中的表并返回行列表。
将行插入数据表并返回数据表。
数据表绑定到用户可以查看的网格视图。
现在我的问题......
我想使用报表查看器来显示数据而不是gridview,这样用户就可以轻松导出数据并使用它查看漂亮的图表。
从我的数据访问类调用存储过程,这只是我项目中的一个类(它不在文件夹中)。
当我创建报表查看器并询问我的数据源时,我的数据访问类没有显示出来。如何从存储过程函数中获取结果(返回的数据表)以插入报表查看器?
答案 0 :(得分:1)
你可以尝试编程方法,
//Load Report Definition.
// From File.
ReportViewer1.LocalReport.ReportPath = "C:\\Report.rdlc";
//Load Report Data.
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", data));
//Refresh Control.
ReportViewer1.LocalReport.Refresh();
如果您的数据包含DataTable,则只需将其作为DataSource添加到ReportViewer即可。 “DataSet1”是当前加载到报表查看器中的报表中数据集的名称。
因此,如果您使用的是实体框架,那就像这样。
//Create Connection.
Entities db = new Entities();
//Get the Data Using the query supplied (Where Entities.SomeObject is the Entity to retrieve data).
IQueryable<Object> data = db.CreateQuery<Object>("SELECT VALUE c FROM Entities.SomeObject AS c WHERE c.SomeValue> 0");
//Reset Control. Doesn't Usually work if this is skipped for some reason.
ReportViewer1.Reset();
//Load Report Definition.
// From File.
ReportViewer1.LocalReport.ReportPath = "C:\\Report.rdlc";
//Load Report Data.
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", data));
//Refresh Control.
ReportViewer1.LocalReport.Refresh();
同样适用于DataTable。
答案 1 :(得分:0)
我最终要做的是让报表查看器访问我的数据表,我在项目中添加了一个数据集。在该数据集中,我必须创建一个具有与我的代码生成的数据表中相同的列名的数据表。从那里我去了我的报告并添加了一个表格并指向数据集中创建的数据表。然后在我的代码中,我使用Shelby的上述代码以编程方式添加了数据表。