找回密码
 立即注册

QQ登录

只需一步,快速开始

utopiadf

中级会员

4

主题

9

帖子

838

积分

中级会员

积分
838

活字格认证

最新发帖
utopiadf
中级会员   /  发表于:2012-1-10 15:47  /   查看:5414  /  回复:1

  1. private void Chart2_6_ReportStart(object sender, EventArgs e)
  2.         {

  3.             string line_code_sql = @"select distinct line_code,getline_name(line_code) linename
  4.   from tbl_static_exceptionmrstatic t
  5. where t.year = {0}
  6.    and t.speed > 200
  7.    and t.speed < 350
  8.    and t.month in ({1}, {2}, {3})";
  9.             string line_sql = @"select
  10. t.year , t.month , getline_name(line_code) lineName,round( AVG(TQI_AVG),3) TQI
  11.   from tbl_static_exceptionmrstatic t
  12. where t.year = {0}
  13.    and t.speed > 200
  14.    and t.speed < 350
  15.    and t.month in ({1}, {2}, {3})
  16.    and line_code='{4}'
  17. group by t.year, t.month, line_code";

  18.             OracleDataAdapter da = new OracleDataAdapter(string.Format(line_code_sql, 2011, 9, 10, 11), ConfigurationManager.AppSettings["ConnStr"]);
  19.             System.Data.DataSet ds = new System.Data.DataSet();
  20.             da.Fill(ds, "line_code");

  21.             DataTable table = ds.Tables["line_code"];

  22.             System.Data.DataSet ds_lines = new System.Data.DataSet();
  23.             Dictionary<string, string> dicLine = new Dictionary<string, string>();
  24.             for (int i = 0; i < table.Rows.Count; i++)
  25.             {
  26.                 string line_code = table.Rows[i]["line_code"].ToString();
  27.                 dicLine.Add(line_code, table.Rows[i]["linename"].ToString());
  28.                 string str2 = string.Format(line_sql, 2011, 10, 11, 9, line_code);
  29.                 OracleDataAdapter da_line = new OracleDataAdapter(str2, ConfigurationManager.AppSettings["ConnStr"]);
  30.                 da_line.Fill(ds_lines, line_code);//
  31.             }

  32.             this.chartControl1.DataSource = ds_lines;
  33.             this.chartControl1.Series.Clear();

  34.             for (int i = 0; i < ds_lines.Tables.Count; i++)
  35.             {
  36.                 string lineCode = ds_lines.Tables[i].TableName;
  37.                 string lineName = dicLine[lineCode];
  38.                 DataDynamics.ActiveReports.Chart.Series series = new DataDynamics.ActiveReports.Chart.Series();
  39.                 series.Type = DataDynamics.ActiveReports.Chart.ChartType.Line;
  40.                 DataPoint[] ps = new DataPoint[ds_lines.Tables[i].Rows.Count];

  41.                 //for (int j = 0; j < ds_lines.Tables[i].Rows.Count; j++)
  42.                 //{
  43.                 //    ps[j] = new DataPoint(ds_lines.Tables[i].Rows[j]["month"], ds_lines.Tables[i].Rows[j]["TQI"], false);

  44.                 //}
  45.                 //series.Points.AddRange(ps);
  46.                 this.chartControl1.Series.Add(series);
  47.                 this.chartControl1.Series[i].LegendText = lineCode + lineName;

  48.                 this.chartControl1.Series[i].ValueMembersY = ds_lines.Tables[lineCode].Columns["TQI"].ColumnName;
  49.                 this.chartControl1.Series[i].ValueMemberX = ds_lines.Tables[lineCode].Columns["month"].ColumnName;
  50.             }
  51.             foreach (Legend item in this.chartControl1.Legends)
  52.             {
  53.                 item.Visible = true;
  54.             }

  55.         }
复制代码
每个series绑定dataset中一个表的数据,但是绘制出来的图只显示了一条折线如图,急求帮助。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

1 个回复

正序浏览
ZenosZeng讲师达人认证 悬赏达人认证
超级版主   /  发表于:2012-1-10 17:04:00
沙发

回复 1# utopiadf 的帖子

你好,你可以通过为每个series指定DataPoint来实现同时使用ds中多个table的数据:
  1.             DataSet ds = new DataSet();

  2.             DataTable dt1 = new DataTable();
  3.             dt1.TableName = &quot;table1&quot;;
  4.             dt1.Columns.Add(&quot;col1&quot;);
  5.             dt1.Columns.Add(&quot;col2&quot;);

  6.             dt1.Rows.Add(1, 50);
  7.             dt1.Rows.Add(2, 20);
  8.             dt1.Rows.Add(3, 70);
  9.             dt1.Rows.Add(4, 40);
  10.             dt1.Rows.Add(5, 90);
  11.             dt1.Rows.Add(6, 60);

  12.             ds.Tables.Add(dt1);

  13.             dt1 = new DataTable();
  14.             dt1.TableName = &quot;table2&quot;;
  15.             dt1.Columns.Add(&quot;col1&quot;);
  16.             dt1.Columns.Add(&quot;col2&quot;);

  17.             dt1.Rows.Add(1, 50);
  18.             dt1.Rows.Add(2, 60);
  19.             dt1.Rows.Add(3, 80);
  20.             dt1.Rows.Add(4, 20);
  21.             dt1.Rows.Add(5, 90);
  22.             dt1.Rows.Add(6, 30);

  23.             ds.Tables.Add(dt1);

  24.             this.chartControl1.Series.Clear();

  25.             DataDynamics.ActiveReports.Chart.Series series = null;

  26.             foreach (DataTable item in ds.Tables)
  27.             {
  28.                 series = new DataDynamics.ActiveReports.Chart.Series();
  29.                 series.Type = DataDynamics.ActiveReports.Chart.ChartType.Line;

  30.                 for (int i = 0; i &lt; item.Rows.Count; i++)
  31.                 {
  32.                     series.Points.Add(new DataPoint(item.Rows[i][0], new DoubleArray(new double[] { Convert.ToDouble(item.Rows[i][1]) }), false));
  33.                 }
  34.                 series.LegendText = item.TableName + item.Columns[1].ColumnName;
  35.                 this.chartControl1.Series.Add(series);

  36.             }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部