2012-11-06 60 views
0

我把我所有的代码,并试图创建一个动态图表,哪个系列来自数据库,我通过listitem集合并试图填充系列和添加到图表。但即使我循环通过(“@ Plant2”,DT.Rows [i] [0] .ToString()); Plant2并试图用多个系列填充如何添加多个系列到动态图表

plantseries = DT.Rows [i] [0] .ToString();

Chart1.Series.Add(plantseries);

然后赋予X和Y值成员系列。最后,我无法获得图表中的所有系列,结果表示循环中所有项目的最后一个相同值,就像我的代码覆盖最后一个值到同一系列名称请帮助我,我迷路了。

  string[] lstBox = HiddenField2.Value.Split(seperator, StringSplitOptions.RemoveEmptyEntries); 
      ListItemCollection lstItemCollection = new ListItemCollection(); 

      for (int i = 0; i < lstBox.Length; i++) 
       { 
        lstItemCollection.Add(new ListItem(lstBox[i])); 
       } 

      DataTable DT = new DataTable(); 
      DT.Columns.Add("Plant"); 
      foreach (ListItem item in lstItemCollection) 
      { 
       DataRow dr = DT.NewRow();    
       dr["Plant"] = item.Value; 
       DT.Rows.Add(dr); 
      } 


      String plantseries = ""; 
      Chart1.Legends.Add("Plants"); 
      LegendItem legendItem = new LegendItem(); 


     for (int i = 0; i < lstItemCollection.Count; i++) 
     { 
      DataTable monthlychart = new DataTable(); 
      if (cnn.State == ConnectionState.Closed) 
      { 
       cnn.Open(); 
       SqlCommand cmd1 = new SqlCommand("prc_Chart_individual_plant", cnn); 
       cmd1.CommandType = System.Data.CommandType.StoredProcedure; 
       cmd1.Parameters.AddWithValue("@Plant", strPlants.ToString()); 
       cmd1.Parameters.AddWithValue("@Configuration", strconfig.ToString()); 
       cmd1.Parameters.AddWithValue("@Startdate", dtstart); 
       cmd1.Parameters.AddWithValue("@Enddate", dtend); 
       cmd1.Parameters.AddWithValue("@Plant2", DT.Rows[i][0].ToString()); 
       SqlDataAdapter adapt1 = new SqlDataAdapter(cmd1); 
       adapt1.Fill(monthlychart); 
       Chart1.DataSource = monthlychart; 
       cnn.Close(); 
      } 


      plantseries = DT.Rows[i][0].ToString(); 
      Chart1.Series.Add(plantseries); 
      Chart1.Series[plantseries].XValueMember = Convert.ToString(monthlychart.Columns[4]); 
      Chart1.Series[plantseries].YValueMembers = Convert.ToString(monthlychart.Columns[8]);     
      Chart1.DataBind(); 

      legendItem.Name = plantseries;     
      legendItem.BorderWidth = 4; 
      legendItem.ShadowOffset = 1; 

      Random random = new Random(); 
      Color c = Color.FromArgb(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); 
      legendItem.Color = c; 

      Chart1.ChartAreas[0].AxisX.LabelStyle.Format = "M.yy"; 


      Chart1.Series[plantseries].IsVisibleInLegend = true; 
      Chart1.Series[plantseries].IsValueShownAsLabel = true; 
      Chart1.Series[plantseries].ToolTip = "Data Point Y Value: #VALY{G}"; 
     } 

回答

0

这是最好的approac和它的作品

for(int j=0; j<monthlychart.Rows.Count; j++) 
       { 
        if(monthlychart.Rows[j][4]!=DBNull.Value) 
        { 
         DateTime xvalue = Convert.ToDateTime(monthlychart.Rows[j][4]); 
         double yvalue = Convert.ToDouble(monthlychart.Rows[j][8]); 
         Chart1.Series[plantseries].Points.AddXY(xvalue,yvalue); 
         Chart1.DataBind(); 

        } 
       } 
相关问题