第一次执行可以的,但是第二次的时候,因为比如这个Chart1.Series.Add(series1);已经有了,所以会提示,“series1”的字符串已经有了,所以出现错误,我应该怎么解决呢,小弟先谢过了哈!public partial class TypeRealTimeChart : System.Web.UI.Page
{
    
    private string typeid = "1"; 
    private static valuetime wendu1;
    private static valuetime wendu2;
    private static valuetime wendu3;
    private static valuetime wendu4;
    string camroom1;
    string camroom2;
    string camroom3;
    string camroom4;
    int i = 0;    struct valuetime
    {
        public double value;
        public DateTime time;
    }
    
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.QueryString["pid"] != null)
        {
            typeid = Request.QueryString["pid"];
            //modify chart title by sensorid
            switch (typeid)
            {
                case "1":
                    Chart1.Titles[0].Text = "温度曲线";
                    break;
                case "2":
                    Chart1.Titles[0].Text = "湿度曲线";
                    break;
                case "3":
                    Chart1.Titles[0].Text = "电压曲线";
                    break;
                case "4":
                    Chart1.Titles[0].Text = "电流曲线";
                    break;
            }
        }
    }
    /// <summary>
    /// Handles the Tick event of the Timer1 control.
    /// </summary>
    /// <param name="sender">The source of the event.</param>
    /// <param name="e">The <see cref="System.EventArgs"/> instance containing the event data.</param>
    protected void Timer1_Tick(object sender, EventArgs e)
    {
        UpdateChart();
    }
    private void UpdateChart()
    {
        string dsn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        
        SqlConnection con = new SqlConnection(dsn);
        con.Open();
        // SqlCommand cmd = new SqlCommand("select * from article where articletype=3", con);
        SqlDataAdapter da = new SqlDataAdapter("select  top 1  campus+room as camroom1 from measurement_v group by campus,room", con);
        //SqlDataAdapter da1 = new SqlDataAdapter("select top 1 campus+room as camroom from measurement_v where campus+room !=(select  top 1  campus+room from measurement_v group by campus,room)group by campus,room", con);
        //SqlDataAdapter da2 = new SqlDataAdapter("select  top 1  campus+room as camroom from measurement_v group by campus,room", con);
        //SqlDataAdapter da3 = new SqlDataAdapter("select  top 1  campus+room as camroom from measurement_v group by campus,room", con);
        DataTable dt = new DataTable();
        da.Fill(dt);
        camroom1 = dt.Rows[0]["camroom1"].ToString();//dt.Rows[0]["content"].ToString();        SqlDataAdapter da1 = new SqlDataAdapter("select top 1 campus+room as camroom2 from measurement_v where campus+room != '" + camroom1 + "' group by campus,room", con);
        DataTable dt1 = new DataTable();
        da1.Fill(dt1);
        camroom2 = dt1.Rows[0]["camroom2"].ToString();//dt.Rows[0]["content"].ToString();        SqlDataAdapter da2 = new SqlDataAdapter("select top 1 campus+room as camroom3 from measurement_v where campus+room != '" + camroom1 + "' and   campus+room != '" + camroom2 + "' group by campus,room", con);
        DataTable dt2 = new DataTable();
        da2.Fill(dt2);
        camroom3 = dt2.Rows[0]["camroom3"].ToString();//dt.Rows[0]["content"].ToString();        SqlDataAdapter da3 = new SqlDataAdapter("select top 1 campus+room as camroom4 from measurement_v where campus+room != '" + camroom1 + "' and   campus+room != '" + camroom2 + "'and   campus+room != '" + camroom3 + "' group by campus,room", con);
        DataTable dt3 = new DataTable();
        da3.Fill(dt3);
        camroom4 = dt3.Rows[0]["camroom4"].ToString();//dt.Rows[0]["content"].ToString();
        
        //数据集显示属性设置
        //数据集"出口"显示属性设置
        Series series1 = new Series(camroom1);        //数据集声明  
        
   
        series1.ChartType = SeriesChartType.Spline;   //数据显示方式 Line:为折线  Spline:曲线 
        
   //     series1.Color = Color.Green;                //线条颜色
        series1.XValueType = ChartValueType.String;
        series1.IsXValueIndexed = true;
        series1.IsValueShownAsLabel = false;
        series1.YValueType = ChartValueType.Double;
        series1.MarkerStyle = MarkerStyle.Circle;   //线条上的数据点标志类型
        series1.ShadowOffset = 1;
        
        bool bSuc = GetValue(typeid, "1", ref wendu1);
        if (bSuc)
        {
            string lastXValue = wendu1.time.ToLongTimeString();
            double lastYValue = wendu1.value;
            series1.Points.AddXY(lastXValue, lastYValue);
            series1.ToolTip = "X value = #VALX\nY value = #VALY";
            //series.IsValueShownAsLabel = true;
        }
        Chart1.Series.Add(series1);        //数据集"出口"显示属性设置
        Series series2 = new Series(camroom2);        //数据集声明  
        series2.ChartType = SeriesChartType.Spline;   //数据显示方式 Line:为折线  Spline:曲线  //       series2.Color = Color.Red;                //线条颜色
        series2.XValueType = ChartValueType.String;
        series2.IsXValueIndexed = true;
        series2.IsValueShownAsLabel = false;
        series2.YValueType = ChartValueType.Double;
        series2.MarkerStyle = MarkerStyle.Circle;   //线条上的数据点标志类型
        series2.ShadowOffset = 1;         bSuc = GetValue(typeid, "2", ref wendu1);
        if (bSuc)
        {
            string lastXValue = wendu1.time.ToLongTimeString();
            double lastYValue = wendu1.value;
            series2.Points.AddXY(lastXValue, lastYValue);
            series2.ToolTip = "X value = #VALX\nY value = #VALY";
            //series.IsValueShownAsLabel = true;
        }
        Chart1.Series.Add(series2);        //数据集"出口"显示属性设置
        Series series3 = new Series(camroom3);        //数据集声明  
        series3.ChartType = SeriesChartType.Spline;   //数据显示方式 Line:为折线  Spline:曲线  //       series3.Color = Color.Red;                //线条颜色
        series3.XValueType = ChartValueType.String;
        series3.IsXValueIndexed = true;
        series3.IsValueShownAsLabel = false;
        series3.YValueType = ChartValueType.Double;
        series3.MarkerStyle = MarkerStyle.Circle;   //线条上的数据点标志类型
        series3.ShadowOffset = 1;         bSuc = GetValue(typeid, "3", ref wendu1);
        if (bSuc)
        {
            string lastXValue = wendu1.time.ToLongTimeString();
            double lastYValue = wendu1.value;
            series3.Points.AddXY(lastXValue, lastYValue);
            series3.ToolTip = "X value = #VALX\nY value = #VALY";
            //series.IsValueShownAsLabel = true;
        }
        Chart1.Series.Add(series3);        //数据集"出口"显示属性设置
        Series series4 = new Series(camroom4);        //数据集声明  
        series4.ChartType = SeriesChartType.Spline;   //数据显示方式 Line:为折线  Spline:曲线    //     series4.Color = Color.Red;                //线条颜色
        series4.XValueType = ChartValueType.String;
        series4.IsXValueIndexed = true;
        series4.IsValueShownAsLabel = false;
        series4.YValueType = ChartValueType.Double;
        series4.MarkerStyle = MarkerStyle.Circle;   //线条上的数据点标志类型
        series4.ShadowOffset = 1;         bSuc = GetValue(typeid, "4", ref wendu1);
        if (bSuc)
        {
            string lastXValue = wendu1.time.ToLongTimeString();
            double lastYValue = wendu1.value;
            series4.Points.AddXY(lastXValue, lastYValue);
            series4.ToolTip = "X value = #VALX\nY value = #VALY";
            //series.IsValueShownAsLabel = true;
        }
        Chart1.Series.Add(series4);                while (series1.Points.Count > 100)
        {
            // Remove series points
            foreach (Series series in this.Chart1.Series)
            {
                series.Points.RemoveAt(0);
            }
        }        // Adjust categorical scale
        double axisMinimum = series1.Points[0].XValue;
        this.Chart1.ChartAreas[0].AxisX.Minimum = axisMinimum;
        this.Chart1.ChartAreas[0].AxisX.Maximum = axisMinimum + 100;
        con.Close();
    }    /// <summary>
    /// 取值
    /// </summary>
    /// <param name="type">数值类型:1温度;2湿度;3电压;4电流</param>
    /// <param name="sensorid">传感器标记:各个机房对应不同传感器标记</param>
    /// <returns>返回值</returns>
    private bool GetValue(string type, string sensorid, ref valuetime newValue)
    {
        string connString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
        string sql =
            "SELECT TOP 1 [value],stime FROM measurements WHERE (type = @type) AND (sensorid = @sensorid) ORDER BY stime DESC";
        using (SqlConnection conn = new SqlConnection(connString))
        {
            SqlCommand cmd = new SqlCommand(sql, conn);
            cmd.Parameters.Add("@type", SqlDbType.VarChar);
            cmd.Parameters["@type"].Value = type;
            cmd.Parameters.Add("@sensorid", SqlDbType.VarChar);
            cmd.Parameters["@sensorid"].Value = sensorid;
            try
            {
                conn.Open();
                SqlDataReader sdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
                if (sdr.Read())
                {
                    newValue.value = (double)sdr["value"];
                    newValue.time = (DateTime)sdr["stime"];
                }
                else
                {
                    return false;
                }
                conn.Close();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return false;
            }
        }
        return true;
    }
}