问题:我有一个 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;
}
}