2013-03-05 97 views
1

我已经将类的对象设置为CR的数据源。所有字符串字段都出现在设计好的字段资源管理器中。但是数字或日期时间字段发生了什么?我如何带他们?为什么Crystal Reports不显示int,DateTime,double,money fields等?

public class ClsOutDocket 
{ 
    public string RegistrationNo { get; set; }   
    public double? WeightIn { get; set; }   
    public DateTime? DateIn { get; set; }   
    public string TimeIn { get; set; } 
} 

回答

3

可惜CrystalReport不支持Nullable<T>两者DateInWeightIn字段nullables。

如果它适合你的情况,你可以做的是发布映射null的值两个额外的属性,如:

public double _WeightIn 
{ 
    get 
    { 
     if (WeightIn == null) 
      return Double.NaN; 

     return (double)WeightIn; 
    } 
    set 
    { 
     if (value == Double.NaN) 
      WeightIn = null; 
     else 
      WeightIn = value; 
    } 
} 

当然,这会让你的班很“脏”,除非您正在使用模型类将数据传递给报告,这可能是一个问题。您可以考虑增加该属性隐藏在VS编辑器属性:

[EditorBrowsable(EditorBrowsableState.Never)] 

不要忘记,CR会看到“假空”值(Double.NaNDateTime.MinValue),也因为它不知道他们” 特殊值它会按原样使用它们。如果这是一个问题(或者您无法使用正确的空值),那么您需要更改报告以处理这些特殊情况。

+0

很好的解释...谢谢阿德里亚诺 – sony 2013-03-05 13:06:40

+0

@sony您好! – 2013-03-05 13:07:15

相关问题