DataTable作为ReportViewer中的DataSource

时间:2015-11-14 16:23:43

标签: c# winforms datatable datasource reportviewer

(首先,我很抱歉我的英语,因为我是一个陌生人而且我不太了解)

我在一个学校项目工作。但我需要在ReportViewer中将DataTable设置为DataSource。首先,用户键入文档的ID,然后单击按钮,该按钮调用在我的数据库中执行select并返回12个字段的类。我创建了一个DataSet,其中包含选择结果的所有字段,并且我已将其选为Report DataSource。但是我需要将select的数据传输到DataSet,因为当我启动应用程序时,Report会出错。这是代码,希望你能帮助我!感谢。

Buttton代码:

SelectDocumento doc = new SelectDocumento();
        doc.ImprimirDoc(int.Parse(txtID.Text));

在我的数据库中选择数据的类:

public void ImprimirDoc(int id)
    {
        string pesquisar = "CALL SP_Imprimir_Documento(" + id + ")";

        MySqlConnection con;

        con = new MySqlConnection("Persist Security Info=false; server=localhost; database=hospital; uid=root; pwd=");

        MySqlDataAdapter adapter = new MySqlDataAdapter(pesquisar, con);

        DataTable dt = new DataTable();
        dt.TableName = "DataSet1";
        con.Open();
        adapter.Fill(dt);

        ImprimirDocumento imprimir = new ImprimirDocumento(dt);
        imprimir.ShowDialog();
    }

报告表格代码:

private DataTable proc;

    public ImprimirDocumento(DataTable select)
    {
        InitializeComponent();
        proc = select;
    }

    ConexaoHospital bd = new ConexaoHospital();
    SelectDocumento doc = new SelectDocumento();

    private void ImprimirDocumento_Load(object sender, EventArgs e)
    {
        this.rptDocumento.RefreshReport();

        this.rptDocumento.LocalReport.DataSources.Clear();

        Microsoft.Reporting.WinForms.ReportDataSource rprtDTSource = new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", proc);

        this.rptDocumento.LocalReport.DataSources.Add(rprtDTSource);
        this.rptDocumento.RefreshReport();
    }

报告显示错误:

Error

1 个答案:

答案 0 :(得分:0)

如果某人有类似问题,我的帖子方式是正确的,我的问题是因为我的ReportViewer DataSet名称与我的DataTable不同。我的DataTable名称是“DataSet1”,我的DataSet名称是“Documento”。我更改了“DataSet1”的DataSet名称,它可以正常工作。