1

我已经将一个类的对象设置为 CR 的数据源。所有的字符串字段都出现在设计中的Fields Explorer中。但是数字或日期时间字段会发生什么?我怎么带他们?

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

1 回答 1

3

不幸的是,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 会看到“假空”值 ( Double.NaNand DateTime.MinValue),因为它不知道它们是特殊值,所以会照原样使用它们。如果这是一个问题(或者您不能使用正确的null 值),那么您需要更改您的报告来处理这种特殊情况。

于 2013-03-05T13:02:36.530 回答