3
我已經創建了一個winform,供用戶查看查看我爲他們創建的許多報告。我有一個下拉列表與報告名稱觸發適當的領域來顯示參數。一旦這些填充完畢,他們按提交併出現報告。這是他們第一次點擊屏幕。他們可以更改參數,ReportViewer可以正常工作。切換到不同的報表,而我得到以下的ReportViewer錯誤:在WinForms的ReportViewer中切換數據源
An error occurred during local report processing.
An error has occurred during the report processing.
A data source instance has not been supplied for the data source "CgTempData_BusMaintenance".
至於我在使用的過程:
- 我設置
reportName
(串)的物理RDLC名。 - 我將
dataSource
(字符串)設置爲數據源名稱 - 我使用要運行的報表的數據填充通用DataTable。
- 製作中的ReportViewer可見
- 設置
LocalReport.ReportPath = "Reports\\" = reportName;
- 清除
LocalReport.DataSources.Clear()
- 添加新
LocalReport.DataSources.Add(new ReportDataSource(dataSource, dt));
RefreshReport()
上的ReportViewer。
這裏是設置並顯示的ReportViewer的代碼部分:
/// <summary>
/// Builds the report.
/// </summary>
private void BuildReport()
{
DataTable dt = null;
ReportingCG rcg = new ReportingCG();
if (reportName == "GasUsedReport.rdlc")
{
dataSource = "CgTempData_FuelLog";
CgTempData.FuelLogDataTable DtFuelLog = rcg.BuildFuelUsedTable(fromDate, toDate);
dt = DtFuelLog;
}
else if (reportName == "InventoryCost.rdlc")
{
CgTempData.InventoryUsedDataTable DtInventory;
dataSource = "CgTempData_InventoryUsed";
DtInventory = rcg.BuildInventoryUsedTable(fromDate, toDate);
dt = DtInventory;
}
else if (reportName == "VehicleMasterList.rdlc")
{
dataSource = "CgTempData_VehicleMaster";
CgTempData.VehicleMasterDataTable DtVehicleMaster = rcg.BuildVehicleMasterTable();
dt = DtVehicleMaster;
}
else if (reportName == "BusCosts.rdlc")
{
dataSource = "CgTempData_BusMaintenance";
dt = rcg.BuildBusCostsTable(fromDate, toDate);
}
// Setup the DataSource
this.reportViewer1.Visible = true;
this.reportViewer1.LocalReport.ReportPath = "Reports\\" + reportName;
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource(dataSource, dt));
this.reportViewer1.RefreshReport();
}
任何想法如何刪除所有剩餘的舊數據的?我是否處理該對象並重新創建它?