我有一份主要报告和一份子报告。
//主报告调用subReport
DataView dvDetails = new DataView(_dtDetails); // _dtDetails is a datatable
rptSubHistory rptSubHistory = new rptSubHistory(dvDetails);
rptSubHistory.DataSource = dvDetails;
subHistory.Report = rptSubHistory;
//从子报告中获取数据
public void rptSubHistory_FetchData(object sender, GrapeCity.ActiveReports.SectionReport.FetchEventArgs eArgs)
{
_intRecordCount++;
}
//来自子报告的详细格式
public void Detail_Format(object sender, System.EventArgs eArgs)
{
if (_dvDetails.Count > 0)
{
txtColumn.Text = _dvDetails.Table.Rows[_intRecordCount]["ColumnName"].ToString();
txtOrigValue.Text = _dvDetails.Table.Rows[_intRecordCount]["OrigValue"].ToString();
txtNewValue.Text = _dvDetails.Table.Rows[_intRecordCount]["CurrentValue"].ToString();
}
}
我遇到的问题是,当主报表调用子报表时,从子报表中获取数据会自行迭代数据源的确切计数。希望有道理。因此,例如,dvDetails
的计数为32.当从子报告中获取数据时,它会自行迭代32次,从不接触Detail_Format。是什么导致了这种行为。上周这完美无缺。它将点击FetchData然后详细格式以生成一个行项目,冲洗重复。
从设计端事件属性我有“FetchData”指向上面列出的获取数据。任何帮助表示赞赏。
答案 0 :(得分:1)
I solved the issue that I was having. Apparently just assigning the dataview as the datasource of the sub report was enough. In the datafiled property of the sub report I assigned the column names of the DV as the values. And removed the fetchdata and detailFormat functions from the sub report all together. Since I already had the values I needed in the DV, it just automatically populates.