繁体   English   中英

为什么Crystal Reports没有显示int,DateTime,double,money字段等?

[英]Why Crystal Reports not showing int, DateTime, double, money fields etc?

我已经将类的对象设置为CR的数据源。 所有字符串字段都显示在设计中的字段资源管理器中。 但是数字或日期时间字段会发生什么? 我怎么带它们?

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

不幸的是,CrystalReport不支持Nullable<T>并且DateInWeightIn字段都是空的。

如果它适用于您的情况,您可以做的是发布两个额外的属性,将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会看到“假的null”值( Double.NaNDateTime.MinValue ),因为它不知道它们是特殊值,它会按原样使用它们。 如果这是一个问题(或者您无法使用正确的空值 ),那么您需要更改报告以处理此特殊情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM