0

我在 C# 中使用 VS 2012 express 编码,并且在将数据从数据集(我使用 SQL Server CE)添加到报表视图时遇到问题。我的代码是这样的:

private void button1_Click(object sender, EventArgs e)
{
    System.Data.SqlServerCe.SqlCeConnection con;
    System.Data.SqlServerCe.SqlCeDataAdapter da;
    DataSet ds1;

    con = new System.Data.SqlServerCe.SqlCeConnection();
    con.ConnectionString = ConfigurationManager.ConnectionStrings["MySalon.Properties.Settings.MySalonConnectionString"].ToString();

    string sql = "SELECT * FROM CUSTOMER_PAYMENTS;";

    try
    {      
        con.Open();
        da = new System.Data.SqlServerCe.SqlCeDataAdapter(sql, con)
        ds1 = new DataSet();

        da.Fill(ds1, "DayRep");

        ReportDataSource datasource;

        datasource = new ReportDataSource("DayRep", ds1.Tables[0]);

        reportViewer1.LocalReport.DataSources.Clear();
        reportViewer1.LocalReport.DataSources.Add(datasource);
        con.Close();
        reportViewer1.LocalReport.Refresh();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }        
}

我可以看到数据源有数据,但按下按钮时报告保持空白(没有错误只是空白)。

4

1 回答 1

1

尝试添加以下代码行:

 reportViewer1.LocalReport.ReportEmbeddedResource = 
   "Your_Name_Of_Project.Name_Of_Your_Report.rdlc";

如果您创建了自己的 .rdlc 报告文件,则应该是这样,以便向 reportViewer 指示从何处获取数据。

另外,这行代码在哪里?

this.reportViewer1.RefreshReport();

通常,它是由工作室添加的(如果您使用它进行编码)。它应该在代码的末尾,就在try块的末尾。无论如何,它是“必备”,没有它你的报告真的会保持空白。

此外,在我看来,您应该替换这行代码:

 ds1 = new DataSet();

有了这个:

 ds1 = new DataSet("myDataSet"); //for exmaple, so to make dataSet have some name

然后重写这行代码:

  datasource = new ReportDataSource("DayRep", ds1.Tables[0]);

接下来:

  dataSource = new ReportDataSource("myDataSet", ds1.Tables[0] as DataTable);

更新

好吧,您无需安装 rdlc teamplate 即可通过 ReportViewer 运行和显示报告。

正如这里所说,(在示例中),你可以这样写

// Set Processing Mode

    reportViewer.ProcessingMode = ProcessingMode.Local;

    // Set RDL file

    using (FileStream stream = new FileStream("report1.rdlc", FileMode.Open))
    {
        reportViewer.LocalReport.LoadReportDefinition(stream);
    }

因此,报告将被加载到 repoerViewer 中。这里的主要问题是我有一些 .rdlc 报告,所以我现在可以加载它们。要在没有模板的情况下创建它们,您可以使用另一种方法,因此以编程方式创建它们 - 也许这篇文章可以帮助您。另外,看看这里的 MSDN。

UPD2 您可以rdlc使用此链接查看报告的文本版本。但请记住,您将无法将其完全加载rdlc到您的 reportViewer 中并查看您想要的数据。这.rdlc只是一个示例,每个报告都应该由项目的开发人员创建。主要原因是.rdlc我使用了你没有的 DataSet,因为它从你没有的数据库中获取了数据。所以,我认为你看这个的唯一原因rdlc只是为了熟悉。去创造.rdlc报告成功,你应该使用我之前讲过的方法。要获取更多信息,您可以尝试在 google 中搜索“以编程方式生成报告定义”或找到一些机会在 IDE 中创建报告,就像 Visual Studio 一样。

于 2013-05-15T20:16:34.020 回答