1. 程式人生 > >vs 2015 rdlc報表綁定datagridview中的數據

vs 2015 rdlc報表綁定datagridview中的數據

i++ cell bsp clear 單純 for dto name column

這幾天一直想要實現rdlc報表綁定datagridview中的數據,始終在虛擬表向rdlc報表綁定這一步上出錯。今天從下午4點到七點四十一直在嘗試。最終還是實現了,最然並不知所以然,這個問題還是以後在考慮吧,目前的項目要緊。

首先是 datagridview中的數據傳到虛擬表中。

for (int i = 0; i < dgvscan.Columns.Count - 1; i++)
{
dtout.Columns.Add(dgvscan.Columns[i].Name);
}

//添加行

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();

然後是虛擬表綁定到報表

private void reportout_Load(object sender, EventArgs e)
{
ReportDataSource rdlc = new ReportDataSource("DataSet2", dtout);

reportViewer1.LocalReport.DataSources[0] = rdlc; //最好不要用add ----假設此行行數為n
//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中的數據