我尝试将值添加到silverlight折线图中。为此我创建了折线图,然后使用wcf ria services添加该图表中的数据。
Everthing工作正常,但是当我尝试运行我的网站时,它会在图表中加载一些虚拟数据。在我的windows azure sql表中没有类似的数据。 它访问azure sql表并且工作正常,但我的数据库中的值不相同。
要显示从azure应用程序访问数据库,我使用了ado.net实体模型并创建了 waterinfodomain ,我使用了此代码和其他折线图类似。
我用过:
private GetTemprature()
{
//shows and gives garden uses from sql table
context = new WaterDomainContext();
context.FarmTemps.Clear();
var query = context.GetFarmTempsQuery();
LoadTemp = context.Load<FarmTemp>(query);
LoadTemp.Completed += new EventHandler(LoadTemp_Completed);
}
private void LoadTemp_Completed(object sender, EventArgs e)
{
//Draw values from a table for Performance
List<Temprature> tmp = new List<Temprature>();
if (LoadTemp.Entities != null || LoadTemp.Entities.Count() > 0)
{
foreach (FarmTemp item in LoadTemp.Entities)
{
tmp.Add(new Temprature()
{
Temp = (float)(item.Temp),
Date = Convert.ToDateTime(item.ODate)
});
}
}
LineSeries tmpv = FarmCondtion.Series[0] as LineSeries;
tmpv.ItemsSource = tmp;
}
我已添加了这张图表的快照:http://i.imgur.com/bZkxZ.png
现在您可以看到日期不是正常顺序[这些也不是我数据库中的日期]并且只显示Dots而不是行。 但是我的数据库确实只有过去七天的日期和其他值的常规值。
为什么会这样?
请告诉我
由于
答案 0 :(得分:0)
我的第一个赌注是问题在于 Convert.ToDateTime 方法。我认为 item.ODate 是您要转换为DateTime的字符串。
通过传递正确的文化来转换为DateTime会更安全。例如,10/1/2012在en-US中与在nl-BE中不同。这就是为什么始终指定从哪个文化转换字符串(参考:http://msdn.microsoft.com/en-us/library/9xk1h71t.aspx)非常重要。
现在另一方面。为什么您希望以正确的顺序查看日期?我没有看到任何代码根据日期对项目进行排序。你是在后端做这个吗?
答案 1 :(得分:0)
您提到相同的数据在一个图表中正常工作,但在另一个图表中没有。两张图表之间有什么不同吗?我认为问题出在客户端,因为您已经验证了数据库和其中一个图表中的数据都很好。因此,请立即关注客户端,检查如何配置图表的数据源。顺便说一句,据我从截图中可以看出,日期是有序的。它从11/1/2011开始,到12/1/2011,然后是2012年1月1日,一直到10/1/2012。图表有点小,因此标签显示在两行上。请不要阅读第一行,然后阅读第二行。相反,从左到右一起读两条线。类似的东西:
1 3 5
2 4 6
如果您的意思是日期不应该在将来,请检查您是否有可能改变日期的代码。
最诚挚的问候,
徐明。