如何以编程方式为ASP.NET ReportViewer控件设置数据源?
如何以编程方式设置ASP.NET ReportViewer控件的数据源?如何以编程方式为ASP.NET ReportViewer控件设置数据源?
我有一个VS 2008 ReportViewer控件,并希望在几个不同的报告之间切换。
我可以通过设置报表源和刷新控件来切换报表,但我看不到设置数据源的位置。
每个报表都有自己的数据源,如果我在构建控件时初始配置它们,那就没问题,但我需要在它们之间切换。
我假设问题是关于ReportViewer控件。
reportViewer.LocalReport.DataSources.Clear();
reportViewer.LocalReport.DataSources.Add(new ReportDataSource("dsname", source));
"dsname"
是数据源的名称,你可以找到它.rdlc文件。 source
是您想要在报告中显示的数据的变量。
当我这样做,我得到 “#报告处理过程中发生错误 *数据源实例尚未提供给数据源....” – Maestro1024 2010-02-15 12:58:55
并提供数据源中列出的数据源我最初设置的默认报告。这就像新的数据源没有被真正设置。 – Maestro1024 2010-02-15 13:22:44
我仍在看这个。想知道我是否有错误的“源名”。如何查看报告中使用的来源? – Maestro1024 2010-02-16 00:44:07
1)基本标记:
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<rsweb:ReportViewer ID="rptView" Width="1000px" ProcessingMode="Local"
Font-Names="Verdana" Font-Size="8pt" InteractiveDeviceInfos="(Collection)"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt" runat="server" >
</rsweb:ReportViewer>
2)编辑XML报告。设置您的数据集&字段名:
<DataSets>
<DataSet Name="dsSource">
<Fields>
<Field Name="MyField1">
<DataField>MyField1</DataField>
<rd:TypeName>System.String</rd:TypeName>
</Field>
<Query>
<DataSourceName>dsSource</DataSourceName>
<CommandText>/* Local Query */</CommandText>
</Query>
</DataSet>
</DataSets>
3)上都设置数据源报告&报表查看器(不知道为什么......无一不是必要的)
SqlConnection cn = new SqlConnection(_connectionString);
SqlCommand cmd = new SqlCommand("dbo.MyProc", cn);
cmd.CommandType = CommandType.StoredProcedure;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable tbl = new DataTable();
cn.Open();
da.Fill(tbl);
cn.Close();
rptView.Visible = true;
rptView.LocalReport.DataSources.Clear();
ReportDataSource rptData = new ReportDataSource("dsSource", tbl);
LocalReport r = new LocalReport();
r.ReportPath = Server.MapPath("~/Reports/MyReport.rdlc");
r.DataSources.Add(rptData);
rptView.LocalReport.DataSources.Add(rptData);
rptView.LocalReport.ReportPath = Server.MapPath("~/Reports/MyReport.rdlc");
rptView.LocalReport.Refresh();
GlobalReportViewer.AsyncRendering = True
If Session.Count > 0 Then
For i As Integer = 0 To Session.Count - 1
If Session(i).GetType().ToString() = "Microsoft.Reporting.WebForms.ReportHierarchy" Then
Session.RemoveAt(i)
End If
Next
End If
GlobalReportViewer.LocalReport.ReportPath = ""
GlobalReportViewer.LocalReport.ReleaseSandboxAppDomain()
GlobalReportViewer.LocalReport.DataSources.Add(New ReportDataSource("XXXDataSet_YYYTable", "ObjectDSZZZ"))
GlobalReportViewer.LocalReport.ReportPath = "Reports\AAAReport.rdlc"
GlobalReportViewer.LocalReport.Refresh()
你在说关于ReportViewer控件或其他控件? – womp 2010-02-15 01:28:28
是的,我很感谢。 – Maestro1024 2010-02-15 10:39:46