我已将类的objct设置为CR的数据源。所有字符串字段都显示在设计中的字段资源管理器中。但是数字或日期时间字段会发生什么?我该如何携带它们?
public class ClsOutDocket
{
public string RegistrationNo { get; set; }
public double? WeightIn { get; set; }
public DateTime? DateIn { get; set; }
public string TimeIn { get; set; }
}
答案 0 :(得分:3)
不幸的是,CrystalReport不支持Nullable<T>
,DateIn
和WeightIn
字段都是无效的。
如果它适用于您的情况,您可以做的是发布两个将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.NaN
和DateTime.MinValue
),因为它不知道它们是特殊值它'我们会照原样使用它们。如果这是一个问题(或者您无法使用正确的空值),那么您需要更改报告以处理此特殊情况。