备忘一下DevExpress XRChart动态设置图表及动态改变数据源

需求:动态生成各产线的品质对比报告,每道品质工序一张对比图表,规划是报表的数据源是品质工序表,每个detailband显示品质工序名称以及这个品质工序的最近7天的各产线品质对比图。

  • 根据产线动态生成series柱状图
report.xrChart1.DataSource = dataSet;
List< DevExpress.XtraCharts.Series > series= new List<DevExpress.XtraCharts.Series>();
foreach (DataRow row in tbLine.Rows)
{
   String line = row.Field<String>("linecode");
   parm["line"] = line;
   DataTable tbLineData = await dbf($"select * from raw where linecode=@line", parm, trxId: trxId);
   tbLineData.TableName = $"rpt_sum2_raw_{line}";
   dataSet.Tables.Add(tbLineData);
   /*DataRelation relation = new global::System.Data.DataRelation($"rpt_sum_2_chk_line_{line}", new global::System.Data.DataColumn[] {
         dataSet.Tables["rpt_sum2_chk_item"].Columns["pcode"]}, new global::System.Data.DataColumn[] { tbLineData.Columns["pcode"] }, false);
   dataSet.Relations.Add(relation); 这个关系在这种需求下不起作用*/

   DevExpress.XtraCharts.Series series1 = new DevExpress.XtraCharts.Series();
   ((SideBySideBarSeriesLabel)series1.Label).TextPattern = "{v:0.00}";
   series1.Name = line;
   series1.DataSource= new DataView(tbLineData);
   //series1.ArgumentDataMember = $"rpt_sum2_raw_{line}.job_date";
   //series1.ValueDataMembersSerializable = $"rpt_sum2_raw_{line}.per";
   series1.ArgumentDataMember = $"job_date";
   series1.ValueDataMembersSerializable = $"per";
   series.Add(series1 );   
}
report.xrChart1.SeriesSerializable = series.ToArray();
  • 为xrChart1增加 beforeprint事件,在这事件里面动态给它filter
    因为要根据pcode动态做filter,所以series的datasource要用dataview而不是datatable.
private void xrChart1_BeforePrint(object sender, CancelEventArgs e)
{
   string pcode=GetCurrentColumnValue("pcode").ToString();  
   foreach(Series series in xrChart1.Series)
   {
      DataView dv= series.DataSource as DataView;
      dv.RowFilter = string.Format("pcode='{0}'", pcode);
   }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值