asp.net实时图表

时间:2018-04-17 20:13:20

标签: c# asp.net

我无法直接从sql数据库更新和格式化asp.net上的图表。来自数据库的数据通过,但我无法弄清楚如何格式化x轴,使minDateTime为最小值,maxDateTime为最大值。但主要问题是,每次我添加X和Y值时,图表似乎都会用新值替换图表中已有的所有内容,而不是将它们添加到之前的那些值。

Backcode chart(这里隐藏的是sql东西,因为这不是问题):

private void Graph(int Id)
    {
        DataTable dt = new DataTable();
        using (SqlConnection con = new SqlConnection(@"HIDDEN HERE"))
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("HIDDEN HERE", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            con.Close();
        }


        string[] x = new string[dt.Rows.Count];
        double[] y = new double[dt.Rows.Count];
        for (int i = 0; i < dt.Rows.Count; i++)
        {
            y[i] = Convert.ToDouble(dt.Rows[i][0]);
            x[i] = dt.Rows[i][1].ToString(); y);
            LiveChart.Series["LiveSeries"].Points.AddXY(minDateTime.Hour, 
            y.Last());
            //This works in some way but doesnt do what i want:
            //LiveChart.Series["LiveSeries"].Points.DataBindXY(x, y);

        }

        LiveChart.Series[0].XValueType = System.Web.UI.DataVisualization.Charting.ChartValueType.DateTime;
        LiveChart.ChartAreas[0].AxisX.IntervalType = System.Web.UI.DataVisualization.Charting.DateTimeIntervalType.Hours;

        //This completely messes up my chart, but this is what i want, min value to be current hour and max value to be end of day.
        //LiveChart.ChartAreas[0].AxisX.Minimum = minDateTime.Hour;
        //LiveChart.ChartAreas[0].AxisX.Maximum = maxDateTime.Hour;
    }

在tick事件中调用Graph()方法。 string [] x从sql server接收datetime,double [] y接收相应的值。

主要宣言:

minDateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
maxDateTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59, 999);

我使用addXY(minDateTime.Hour,y.Last())的原因是因为我想要表示进入y数组的最后一个值的当前小时(实际上是小时和分钟,但我不知道如何)。该图表将最后一个y值与当前小时绑定,但它不会添加更多,这意味着每个新y值将仅与当前小时绑定而不显示之前的所有小时。我知道我应该使用数据绑定,但在这种情况下我不知道该怎么做。我希望数据库中的最后一个y值与每个tick的当前小时(和分钟)绑定并添加到此上,以便图形填满,不像它现在不会添加新数据点时的情况。

我该怎么做?

0 个答案:

没有答案