我的PivotView的PivotViewerNumericProperty中的负值(Silverlight 5)

时间:2013-05-23 14:37:21

标签: silverlight pivotviewer

我有一个数据库查看器,我添加了一个数字查看器属性。当值都是正确的时,它工作正常。当值为负时,我收到错误:

网页错误详情

用户代理:Mozilla / 4.0(兼容; MSIE 8.0; Windows NT 5.1; Trident / 4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729; .NET CLR 1.1.4322 ; MS-RTC LM 8; InfoPath.2; .NET4.0C; .NET4.0E) 时间戳:星期四,2013年5月23日14:20:57 UTC

消息:Silverlight应用程序中未处理的错误StartIndex不能小于零。 参数名称:System.String.InternalSubStringWithChecks中的startIndex(Int32 startIndex,Int32 length,Boolean fAlwaysCopy)    在System.String.Substring(Int32 startIndex,Int32 length)    在Microsoft.Internal.Pivot.Model.HistogramBucketer.CalculateFormatAndFractions(ICollection 1 numbers, String& formatString, Decimal& divFactor) at Microsoft.Internal.Pivot.ViewModels.RangeFacetCategoryViewModel.CalculateFormatAndFractions(ICollection 1个值)    在Microsoft.Internal.Pivot.ViewModels.RangeFacetCategoryViewModel.OnModelChanged(RangeFacetCategory oldModel,RangeFacetCategory newModel)    在Microsoft.Internal.Pivot.ViewModels.ViewModelBase`1.SetModel(Object newModel)    在Microsoft.Internal.Pivot.ViewModels.FilterPaneViewModel.SynchronizeCategories()    在Microsoft.Internal.Pivot.ViewModels.FilterPaneViewModel.b__4() 线:1 Char:1 代码:0

我无法想象我不能拥有负面价值。我传递的值非常小(-.00009825等),但我无法想象这会产生影响。我缺少一个设置吗?谢谢

1 个答案:

答案 0 :(得分:0)

我认为你疯了,直到我在一个最小的PivotViewer控件中自己尝试并得到了同样的错误!

经过一些更多的实验,似乎问题不在于负数,而在于包含四个或五个前导零的尾数(小数部分),具体取决于第一个非零数字的值。

具有四个前导零的值,如0.00001,-1.00002,2.00003,-3.00004都将导致您的错误。 Mantissas .00005到0.00009 工作,大概是因为值被四舍五入,例如0.00005“=”0.0001。

此处描述了同样的问题:(http://social.msdn.microsoft.com/Forums/en-US/silverlightpivotviewer/thread/03f0e782-f2d8-4c70-86f2-93560a8d6151/

他们的解决方法:将小数点四舍五入到四个位置,你应该没问题。如果您的数据处于超级紧密的范围内,您需要在PivotViewer中获得这种精确度,我会乘以1000并以某种方式表明值已缩放。

PS这个行为肯定似乎有些错误 - 我猜测神奇的四位小数限制与以下事实有关:当在过滤器面板中的数字属性的直方图中拖动滑块时,它会显示指示滑块当前值的文本 - 精确到四位小数。也许在它上面放五位小数会让它变得繁荣?