vs 2015 rdlc報表綁定datagridview中的數據
阿新 • • 發佈:2017-09-14
i++ cell bsp clear 單純 for dto name column for (int j = 0; j < dgvscan.Rows.Count - 1; j++)
{
DataRow dr = dtout.NewRow();
for (int k = 0; k < dgvscan.Columns.Count - 1; k++)
{
dr[k] = dgvscan.Rows[j].Cells[k].Value;
}
dtout.Rows.Add(dr);
}
reportout frmReporterOut = new reportout(dtout);
frmReporterOut.Show(); reportViewer1.LocalReport.DataSources[0] = rdlc; //最好不要用add ----假設此行行數為n
//this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", dtout));//之前這句代碼一直不行
this.reportViewer1.RefreshReport();
}
這幾天一直想要實現rdlc報表綁定datagridview中的數據,始終在虛擬表向rdlc報表綁定這一步上出錯。今天從下午4點到七點四十一直在嘗試。最終還是實現了,最然並不知所以然,這個問題還是以後在考慮吧,目前的項目要緊。
首先是 datagridview中的數據傳到虛擬表中。
for (int i = 0; i < dgvscan.Columns.Count - 1; i++)
{
dtout.Columns.Add(dgvscan.Columns[i].Name);
}
//添加行
{
DataRow dr = dtout.NewRow();
for (int k = 0; k < dgvscan.Columns.Count - 1; k++)
{
dr[k] = dgvscan.Rows[j].Cells[k].Value;
}
}
reportout frmReporterOut = new reportout(dtout);
frmReporterOut.Show();
然後是虛擬表綁定到報表
private void reportout_Load(object sender, EventArgs e)
{
ReportDataSource rdlc = new ReportDataSource("DataSet2", dtout);
//this.reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet2", dtout));//之前這句代碼一直不行
this.reportViewer1.RefreshReport();
}
最開始 上面註釋掉的那行代碼總是實現不了功能,換了一行才行,然而並不知道為什麽。
忽然一想,
reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(rdlc);
這樣就可以了,試了一下真可以。最開始應該是在控件編輯的時候為rdlc綁定了數據源,需要重新清除重新綁定。單純的add無法實現數據源的覆蓋
vs 2015 rdlc報表綁定datagridview中的數據