bjqxst 发表于 2016-4-12 10:53:33

1个rdlx上有2个chart,后台,怎么绑定数据

本帖最后由 Lenka.Guo 于 2016-4-12 16:37 编辑

怎么分别绑定这2个图形啊,1个的我知道。2个的,不知道怎么绑定了,通过返回Datatable的方式.

Lenka.Guo 发表于 2016-4-12 17:04:01

您好,
两张图表对应两个DataSet,DataSet1和DataSet2, 在后台根据数据集名称,添加不同的数据。

在LocateDataSource的时候添加判断即可,根据数据集名称来添加数据源:

void pageDocument_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
      {
            if (args.DataSourceName == "DataSource1")
            {
                if (args.DataSetName == "DataSet1")
                {
                  args.Data = GetDataSource();


                }
                if(args.DataSetName == "DataSet2")
                  args.Data = GetDataSource2();
            }

      }



bjqxst 发表于 2016-4-12 17:40:46

我的有2个DataSet,后台只有1个,什么情况.我的代码有问题吗

Lenka.Guo 发表于 2016-4-13 09:04:59

您好,
DataSet需要在报表设计时添加;
在后台根据DataSetName 为其绑定对应的数据。
参考Demo:

bjqxst 发表于 2016-4-13 10:08:52

你发的例子,应该是这样的
void pageDocument_LocateDataSource(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
      {
            if (args.DataSourceName == "DataSource1")
            {
                if (args.DataSetName == "DataSet1")
                {
                  args.Data = GetDataSource1();

                }
                if(args.DataSetName == "DataSet2")
                  args.Data = GetDataSource2();
            }
      }
      private DataTable GetDataSource1()
      {
            DataTable dt = new DataTable();
            dt.Columns.Add("产品编号");
            dt.Columns.Add("产品名称");
            dt.Columns.Add("单价", typeof(int));
            dt.Columns.Add("库存量", typeof(int));
            dt.Rows.Add("A10002", "苹果", 20, 50);
            dt.Rows.Add("A15681", "香蕉", 20, 50);
            dt.Rows.Add("A15681", "菠萝", 20, 50);
            columns = dt.Columns.Count;
            return dt;
      }
      private DataTable GetDataSource2()
      {
            DataTable dt = new DataTable();
            dt.Columns.Add("产品编号");
            dt.Columns.Add("产品名称");
            dt.Columns.Add("单价", typeof(int));
            dt.Columns.Add("库存量", typeof(int));
            dt.Rows.Add("A10002", "苹果", 20, 150);
            dt.Rows.Add("A15681", "香蕉", 20, 250);
            dt.Rows.Add("A15681", "菠萝", 20, 350);
            columns = dt.Columns.Count;
            return dt;
      }

问题是,我不能调试,直接就报错了。

bjqxst 发表于 2016-4-13 10:11:56

2个DataSet是用1个DataTable 还是,各用各的

bjqxst 发表于 2016-4-13 10:32:33

我看,你那个事件,执行了,2次,是不是,不能写在这个事件里。这里只执行了,一次。

Lenka.Guo 发表于 2016-4-13 14:44:36

bjqxst 发表于 2016-4-13 10:32
我看,你那个事件,执行了,2次,是不是,不能写在这个事件里。这里只执行了,一次。

版本号与你安装的版本号不对,报的错,可以使用VS的菜单项“工具”——>转换为ActiveReports10 来转换。

您是在ActiveReports.ReportService.asmx 文件中绑定多个数据源,是同样的用法,通过DataSetName找到数据集,来绑定数据。


bjqxst 发表于 2016-4-13 16:46:46

是同样的用法,只显示最后1个,什么原因

bjqxst 发表于 2016-4-13 17:07:36

有很多DataSet,DataSet是DataSet_KaiBGS,是什么问题。
protected override void OnLocateDataSourceHandler(object sender, GrapeCity.ActiveReports.LocateDataSourceEventArgs args)
      {
            //GetData gt = new GetData();
            // 报表倒数第二个参数为当前页号的值,通过当前页号去加载新的数据
            //int pcount = args.Report.Parameters.Count;029-88331988-339曾
            //args.Data = gt.DataPage((int)args.Report.Parameters.Values.Value);
            //招标统计
            if (args.DataSourceName == "DataSource_Tender")
            {
      }
    }
页: [1] 2
查看完整版本: 1个rdlx上有2个chart,后台,怎么绑定数据