如何将datatable绑定到reportviewer运行时 [英] How to bind datatable to reportviewer runtime

查看:423
本文介绍了如何将datatable绑定到reportviewer运行时的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要使用下面的代码对报告观察者执行绑定数据类型。我没有看到结果显示在 reportviewer 中,下面缺少什么脚本?

  // create dataset 
DataSet ds = new DataSet(myDataset);

//创建datatable
DataTable dt = new DataTable(myDatatable);

//添加列
dt.Columns.Add(column1,typeof(string));
dt.Columns.Add(column2,typeof(string));
dt.Columns.Add(column3,typeof(string));

//插入数据行
dt.Rows.Add(row1-col1,row1-col2,row1-col3);
dt.Rows.Add(row2-col1,row2-col2,row2-col3);

//将datatable添加到数据集
ds.Tables.Add(dt);

//将datatable绑定到报表查看器
this.reportViewer.Reset();
this.reportViewer.ProcessingMode = ProcessingMode.Local;
this.reportViewer.LocalReport.ReportEmbeddedResource =Test.Report1.rdlc;
this.reportViewer.LocalReport.DataSources.Clear();
this.reportViewer.LocalReport.DataSources.Add(new ReportDataSource(dt.TableName,dt));
this.reportViewer.RefreshReport();


解决方案


如何绑定datatable到reportviewer,
我将在这里分享可能对其他人有用。


  1. 添加到表单 clsTables类 Report1.rdlc文件
  2. reportViewer1 ,然后点击 reportViewer1
  3. 在Report1.rdlc上

    • li>
    • 添加数据集名称:dsBody
      数据源:测试
      可用数据集< clsTables

    • 点击确定

    • 右键点击Report1.rdlc选择插入表格< dsBody元素( Column0,Colum1,Column2 )至 Report1.rdlc表

  4. / ol>



 命名空间测试{
public class clsTables {
// constructor
public clsTables(string col0,string col1,string col2){
this.Column0 = col0;
this.Column1 = col1;
this.Column2 = col2;
}

//属性
public string Column0 {get;组; }
public string Column1 {get;组; }
public string Column2 {get;组; }
}
}

命名空间测试{
public class clsMain {
public void BindToRepprtViewer(){
// create dataset
DataSet ds = new DataSet(myDataset);

//创建datatable
DataTable dt = new DataTable(myDatatable);

//添加列
dt.Columns.Add(column1,typeof(string));
dt.Columns.Add(column2,typeof(string));
dt.Columns.Add(column3,typeof(string));

//插入数据行
dt.Rows.Add(row1-col1,row1-col2,row1-col3);
dt.Rows.Add(row2-col1,row2-col2,row2-col3);

//将datatable添加到数据集
ds.Tables.Add(dt);

//将行保存到rowList
List< clsTables> rowList = new List< clsTables>();
rowList .Clear();
foreach(dt.Rows中的DataRow行){
rList.Add(new clsTables(Convert.ToInt32(row.ItemArray [0]),row.ItemArray [1] .ToString(),row。 ItemArray [2] .ToString()));
}

//把rowList绑定到bs
BindingSource bs = new BindingSource();
bs.DataSource = rowList;

//绑定bs到rds
ReportDataSource rds = new ReportDataSource();
rds.Name =dsBody;
rds.Value = bs;

//将rds绑定到报表查看器
reportViewer1.Reset();
reportViewer1.LocalReport.ReportEmbeddedResource =Test.Report1.rdlc;
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(rds);
reportViewer1.RefreshReport();
}
}
}


I want to do a bind datatable to reportviewer with the code below. I don't see the results appear in the reportviewer, what the lack of script below?

// create dataset
DataSet ds = new DataSet("myDataset");

// create datatable
DataTable dt = new DataTable("myDatatable");

// add columns
dt.Columns.Add("column1", typeof(string));
dt.Columns.Add("column2", typeof(string));
dt.Columns.Add("column3", typeof(string));

// insert data rows
dt.Rows.Add("row1-col1", "row1-col2", "row1-col3");
dt.Rows.Add("row2-col1", "row2-col2", "row2-col3");

// add datatable to dataset 
ds.Tables.Add(dt);

// bind datatable to report viewer
this.reportViewer.Reset();
this.reportViewer.ProcessingMode = ProcessingMode.Local;
this.reportViewer.LocalReport.ReportEmbeddedResource = "Test.Report1.rdlc";
this.reportViewer.LocalReport.DataSources.Clear();
this.reportViewer.LocalReport.DataSources.Add(new ReportDataSource(dt.TableName, dt));
this.reportViewer.RefreshReport();

解决方案

I found the answer how to bind datatable to reportviewer, I will shared here may be useful for others.

  1. Add to form clsTables class, Report1.rdlc file, reportViewer1.
  2. Then Click on the upper right corner of the reportViewer1, set choose report to Test.Report1.rdlc.
  3. On Report1.rdlc
    • Click New,
    • Add dataset name: dsBody Data source: Test Available dataset: clsTables
    • Click Ok
    • Right click on Report1.rdlc select Insert Table, drag dsBody element(Column0, Colum1, Column2) to Report1.rdlc table.

Namespace Test{
    public class clsTables {
        // constructor
        public clsTables(string col0, string col1, string col2) {
            this.Column0= col0;
            this.Column1= col1;
            this.Column2= col2;
        }

       // properties
       public string Column0{ get; set; }
       public string Column1{ get; set; }
       public string Column2{ get; set; }
    }
}

namespace Test{
    public class clsMain{
        public void BindToRepprtViewer() {        
            // create dataset
            DataSet ds = new DataSet("myDataset");

            // create datatable
            DataTable dt = new DataTable("myDatatable");

            // add columns
            dt.Columns.Add("column1", typeof(string));
            dt.Columns.Add("column2", typeof(string));
            dt.Columns.Add("column3", typeof(string));

            // insert data rows
            dt.Rows.Add("row1-col1", "row1-col2", "row1-col3");
            dt.Rows.Add("row2-col1", "row2-col2", "row2-col3");

            // add datatable to dataset 
            ds.Tables.Add(dt);

            // save rows to rowList 
            List<clsTables> rowList = new List<clsTables>();
            rowList .Clear();
            foreach (DataRow row in dt.Rows) {
                rList.Add(new clsTables(Convert.ToInt32(row.ItemArray[0]), row.ItemArray[1].ToString(), row.ItemArray[2].ToString()));
            }

            // binding rowList to bs
            BindingSource bs = new BindingSource();
            bs.DataSource = rowList;

            // binding bs to rds
            ReportDataSource rds = new ReportDataSource();
            rds.Name = "dsBody";
            rds.Value = bs;

            // binding rds to report viewer
            reportViewer1.Reset();
            reportViewer1.LocalReport.ReportEmbeddedResource =  "Test.Report1.rdlc";
            reportViewer1.LocalReport.DataSources.Clear();
            reportViewer1.LocalReport.DataSources.Add(rds);
            reportViewer1.RefreshReport();
        }
    }
}

这篇关于如何将datatable绑定到reportviewer运行时的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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