RDLC ReportViewer を DataSet の DataTable にアタッチするためのコードを書きました。
しかし、「データ ソース 'DataSet' にデータ ソース インスタンスが提供されていません」というエラーが発生します。
レポート ビューアーの aspx ファイル コード
これはレポート ビューアのコードです
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Font-Names="Verdana"
Font-Size="8pt" InteractiveDeviceInfos="(Collection)"
WaitMessageFont-Names="Verdana" WaitMessageFont-Size="14pt">
<ServerReport ReportPath="Analysis.rdlc" />
<LocalReport ReportPath="Hospital\Analysis.rdlc">
</LocalReport>
</rsweb:ReportViewer>
C# ファイル コード
これは、DataSet の DataTable の行を埋めるコードです。
ArrayList columns = new ArrayList();
columns.Add("Temp");
columns.Add("Humidity");
columns.Add("Rain");
columns.Add("Mosquitos");
columns.Add("FloodArea");
columns.Add("CloudyWeather");
columns.Add("FlowerVases");
columns.Add("IndequateSanitation");
ArrayList data = new ArrayList();
data.Add(Temp.SelectedItem.ToString());
data.Add(Humidity.SelectedItem.ToString());
data.Add(Rain.SelectedItem.ToString());
data.Add(Mosquitos.SelectedItem.ToString());
data.Add(FloodArea1.SelectedItem.ToString());
data.Add(CloudyWeather.SelectedItem.ToString());
data.Add(FlowerVases.SelectedItem.ToString());
data.Add(IndequateSanitation.SelectedItem.ToString());
BayesAnalysis bAnlysis = new BayesAnalysis();
ArrayList result = bAnlysis.classifyD(DiseaseList.SelectedItem.ToString(), columns, data);
List<double> pn = bAnlysis.PosNum();
NormalAnalysis nAnalysis = new NormalAnalysis();
AnalysisDataSet dss = new AnalysisDataSet();
for (int loop = 0; loop < pn.Count; loop++)
{
dss.ReportData.AddReportDataRow(loop, result[loop].ToString(), nAnalysis.NoPatient(nAnalysis.GetDiseaseID("Dengue"), nAnalysis.GetCityID(result[loop].ToString())), nAnalysis.TotalPatient(nAnalysis.GetDiseaseID("Dengue")), nAnalysis.diseasePercentageInCity(nAnalysis.GetDiseaseID("Dengue"), nAnalysis.GetCityID(result[loop].ToString())), pn[loop]);
}
これは、レポート ビューアーにデータ ソースを提供するコードです。
DataTable dtt = dss.ReportData;
ReportViewer1.Visible = true;
ReportDataSource datasource = new ReportDataSource("Analysis",dtt);
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(datasource);
ReportViewer1.LocalReport.Refresh();