如何从DataGridView ro ReportViewer传递数据表 [英] How to Pass data table from DataGridView ro ReportViewer

查看:379
本文介绍了如何从DataGridView ro ReportViewer传递数据表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何从DataGridView中传递数据表?ReportViewer?

在一个win窗体我有一个DataGridView控件,填充一个SqlDataAdapter,我添加了一个复选框列给它为了准备打印(或这样的smt)



现在我想使用ReportViewr创建一个报告,仅显示DataGridView中已检查的行。 strong>



这里是我的form1的代码(包含datagridview)

  private void Fill_DGV_Sefaresh()
{
try
{
MyDB db = new MyDB(); //包含我的SQL连接的类
string sql =SELECT sid,CONVERT(VARCHAR(10),cast(sdate as date),111)sdate,sdes,sfor,suname,isdone,sqty FROM sefaresh order by sid desc;
SqlDataAdapter sda = new SqlDataAdapter(sql,db.MyConn);
DataSet ds = new DataSet();
BindingSource bs = new BindingSource();
sda.Fill(ds);
bs.DataSource = ds.Tables [0] .DefaultView;
bindingNavigator1.BindingSource = bs;
dataGridView1.DataSource = bs;
}
catch {}
}

我的form2的代码(包含ReportViewer控件)

  private SqlDataAdapter idata()
{
MyDB db = new MyDB ;
string sql =SELECT * FROM sefaresh;
SqlDataAdapter sda = new SqlDataAdapter(sql,db.MyConn);
return sda;
}
private void SefareshView_Load(object sender,EventArgs e)
{
idata()。Fill(this.DS_Sefaresh.sefaresh); // DS_Sefaresh是一个数据集项,sefaresh是一个表适配器
this.reportViewer1.RefreshReport();
}


解决方案

  ReportDataSource Rds = new ReportDataSource(dataSetName,bs); 
reportViewer1.LocalReport.DataSources.Add(Rds);

其中bs是您的BindingSource,dataSetName是报表中数据集的名称,Rds是数据源对于ReportViewer,reportViewer1是ReportViewerControl。



如果由于某些原因需要直接从DataGridView获取数据,只需替换 bs with dataGridView1.DataSource。


How to Pass data table from DataGridView ro ReportViewer ?

in a win Form I have a DataGridView control that fills from a SqlDataAdapter , and I added a check box column to it. for "ready to print"(or smt like this)

now I want to create a report with ReportViewr to show only checked rows in my DataGridView.

here is codes of my form1 (Contains datagridview)

private void Fill_DGV_Sefaresh()
    {
        try
        {
            MyDB db = new MyDB();//class that contains my SQL Connection
            string sql = "SELECT sid, CONVERT(VARCHAR(10), cast(sdate as date), 111)sdate, sdes, sfor, suname, isdone, sqty FROM sefaresh order by sid desc";
            SqlDataAdapter sda = new SqlDataAdapter(sql,db.MyConn);
            DataSet ds = new DataSet();
            BindingSource bs = new BindingSource();
            sda.Fill(ds);
            bs.DataSource = ds.Tables[0].DefaultView;
            bindingNavigator1.BindingSource = bs;
            dataGridView1.DataSource = bs;
        }
            catch { }
}

codes of my form2 (contains ReportViewer Control)

private SqlDataAdapter idata()
    {
        MyDB db = new MyDB();
            string sql = "SELECT * FROM sefaresh";
            SqlDataAdapter sda = new SqlDataAdapter(sql, db.MyConn);
            return sda;
        }
private void SefareshView_Load(object sender, EventArgs e)
        {
            idata().Fill(this.DS_Sefaresh.sefaresh);//DS_Sefaresh is a dataset item , sefaresh is a Table adapter
            this.reportViewer1.RefreshReport();
        }

解决方案

Try something like the following,

ReportDataSource Rds = new ReportDataSource(dataSetName, bs);
reportViewer1.LocalReport.DataSources.Add(Rds);

Where bs is your BindingSource, dataSetName is the name of the dataset in the report, Rds is the datasource for the ReportViewer, and reportViewer1 is the ReportViewerControl.

If you for some reason need to take the data directly from the DataGridView just replace bs with dataGridView1.DataSource.

这篇关于如何从DataGridView ro ReportViewer传递数据表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆