C# 如何将多个系列添加到动态图表中

C# 如何将多个系列添加到动态图表中,c#,asp.net,C#,Asp.net,我把我所有的代码放在一起,试图创建一个动态图表,该系列来自数据库,我循环了listitem集合,试图填充系列并添加到图表中;Plant2并尝试使用 string[] lstBox = HiddenField2.Value.Split(seperator, StringSplitOptions.RemoveEmptyEntries); ListItemCollection lstItemCollection = new ListItemCollect

我把我所有的代码放在一起,试图创建一个动态图表,该系列来自数据库,我循环了listitem集合,试图填充系列并添加到图表中;Plant2并尝试使用

            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}";
         }
plantseries=DT.Rows[i][0].ToString()

            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}";
         }
图1.系列。添加(plantseries)

            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}";
         }
然后为序列指定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}";
         }
string[]lstBox=HiddenField2.Value.Split(分隔符,StringSplitOptions.RemoveEmptyEntries);
ListItemCollection lstItemCollection=新建ListItemCollection();
for(int i=0;i
这是最好的方法,而且很有效

            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}";
         }
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();

                    }
                }
for(int j=0;j