1

问题:我有一个 ASP.NET 4.0 图表对象,它为现场调制解调器动态生成一系列延迟数据。整个页面做得更多,图表也显示了一些其他的东西,但它超出了这个范围。该系列是通过从数据库中获取信息的 SQL 生成的,我想看到的是当遥控器离线时图表会从字面上跳过。我正在显示调制解调器在网络中时的最后一个小时的数据,但是假设它最后一次在网络中的时间不到一个小时,它刚刚离线,所以我想查看它的状态下线了。

条件:本质上,如果调制解调器在网络中,离线,回来,离线,并在一个小时内全部回来怎么办?人们希望图表系列中存在空白。目前,SQL 查询处理这个问题的方式是忽略 NULL 和 300 毫秒以下的延迟值,因为从技术上讲,这对于卫星来说是不可能的值。

问题:如果我要调整我的查询以不丢弃 0,有没有办法让它在我的图表中显示空白?图表可以支持这一点吗?它会改为需要多个系列(这将是一个熊实施)?还有另一种我没有想到的方法吗?

需要注意的是:如果需要,我可以发布代码,但这并不是绝对必要的,因为这更像是一个概念性的/是否可能是一种问题。

我已经在这个项目上工作了好几个星期,几乎完成了,所以我不得不回来解决这个问题,而且很少有人能很好地掌握图表控件,我认为这是自那时以来最好的地方在调整查询和图表设置或在 Google 上搜索了几个小时后,我没有找到任何东西。

非常感谢您的帮助。

更新:原来有相关的代码。我完全忘记了动态生成图表系列的不同方法。确实可以逐点进行。如果我这样做,那肯定会更容易。相反,我的系列处理程序如下所示:

protected Boolean Chart_A_Line(string query, string seriesName, int queryType, string connnectionString)
{
    SqlConnection con = new SqlConnection(connnectionString);
    Boolean chartEmpty = true;

    using (con)
    {
        SqlCommand command = new SqlCommand(query, con);


        switch (queryType)
        {
            case 0:
                command.Parameters.AddWithValue("@RemoteId", remote);
                break;
            case 1:
                command.Parameters.AddWithValue("@IRID", inrouteId);
                break;
        }

        command.Parameters.AddWithValue("@NMS", nms);

        con.Open();

        SqlDataReader chartReader = command.ExecuteReader();

        if (chartReader.HasRows)
        {
            chartEmpty = false;
            LatencyCNChart.Series[seriesName].Points.DataBindXY(chartReader, "Time", chartReader, "Data");
        }

        con.Close();

        return chartEmpty;
    }
}
4

1 回答 1

2

我不太确定您如何将数据添加到图表中,但是当您向数据系列添加新点时,您可以将其IsEmpty属性设置为true如此处所述)。

您也可以使用DataManipulator.InsertEmptyPoints().

只要您知道0数据中的所有值都绝对意味着差距值,那么您就可以对每个0值进行适当的调用以在图表中设置差距。

于 2013-05-31T19:20:52.047 回答