0

我在使用 FastReport 将 DataGridView 中的值导出为 PDF 时遇到问题。

我相信我有正确的代码,但我的 PDF 中的行似乎没有更新,它只显示我的 DataGridView 的第一行。

private void CreateDataSet()
    {
        ds = new DataSet();
        DataTable table = new DataTable();
        table.TableName = "ABCD";
        ds.Tables.Add(table);
        {
            for (int i = 0; i < dg.ColumnCount; i++)
            {
                table.Columns.Add(dg.Columns[i].HeaderText);
            }
            for (int j = 0; j < dg.Rows.Count; j++)
            {
                table.Rows.Add(dg.Rows[j].Cells[0].FormattedValue.ToString(), dg.Rows[j].Cells[1].FormattedValue.ToString(), dg.Rows[j].Cells[2].FormattedValue.ToString(), dg.Rows[j].Cells[0].FormattedValue.ToString(), dg.Rows[j].Cells[4].FormattedValue.ToString(), dg.Rows[j].Cells[5].FormattedValue.ToString());
            }
        }
    }

我什至尝试删除For循环并将其替换为:

table.Rows.Add(dg.Rows[0].Cells[0].FormattedValue.ToString(), dg.Rows[0].Cells[1].FormattedValue.ToString(), dg.Rows[0].Cells[2].FormattedValue.ToString(), dg.Rows[0].Cells[0].FormattedValue.ToString(), dg.Rows[0].Cells[4].FormattedValue.ToString(), dg.Rows[0].Cells[5].FormattedValue.ToString());
table.Rows.Add(dg.Rows[1].Cells[0].FormattedValue.ToString(), dg.Rows[1].Cells[1].FormattedValue.ToString(), dg.Rows[1].Cells[2].FormattedValue.ToString(), dg.Rows[1].Cells[0].FormattedValue.ToString(), dg.Rows[1].Cells[4].FormattedValue.ToString(), dg.Rows[1].Cells[5].FormattedValue.ToString());

但无济于事。

这是上述代码的 PDF 输出:http: //i1296.photobucket.com/albums/ag2/paozaf/output_zpsde2b6278.png

所需数据输出:http: //i1296.photobucket.com/albums/ag2/paozaf/desiredoutput_zps44a27fac.png

4

1 回答 1

0

您的问题的原因(它只显示第一行)是 DataBand 的空值。您应该为其分配数据。

Report report = new Report;
report.Load("reportTemplate.frx");
report.RegisterData(dataSet);
report.GetDataSource("tableName").Enabled= true;
DataBand db = report.FindObject("DataBand1") as DataBand;
db.DataSource = report.GetDataSource("tableName");

例子

于 2017-03-17T08:44:22.790 回答