在vs2012 express c#中向reportviewer添加SQL Server CE数据集

本文关键字:SQL Server CE 数据集 添加 reportviewer vs2012 express 中向 | 更新日期: 2023-09-27 18:13:59

我在c#中使用VS 2012 express编码,并且在从数据集(我使用SQL Server CE)添加数据到reportview时存在问题。我的代码是:

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

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

在vs2012 express c#中向reportviewer添加SQL Server CE数据集

尝试添加以下代码行:

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

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

还有,这行代码在哪里?

this.reportViewer1.RefreshReport();

通常,它是由工作室添加的(如果您使用它编写代码)。它应该在代码的末尾,就在try块的末尾。无论如何,它是"mustHave",没有它,你的报告将是空白的。

还有,我觉得你应该替换这行代码:

 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我使用你没有的数据集,因为它从你没有的数据库中得到数据。所以,我认为你看这个rdlc的唯一原因只是为了熟悉。要成功创建.rdlc报告,您应该使用我之前提到的方法。要获得更多信息,您可以尝试在google中搜索"以编程方式生成报告定义",或者找到一些在IDE中创建报告的机会,就像Visual Studio一样。