我正在尝试使用一个表中的设置数据来允许我动态地格式化字段/动态。我知道我可以根据PXUIFieldAttribute类更改字段名称和可见性,但显然更改精度或字符串长度有点棘手。从我已经完成的研究中,我提出了以下示例代码,看起来应该可以正常工作 - 但是我得到了错误:
“无法将类型为'PX.Data.PXUIFieldAttribute'的对象强制转换为'PX.Data.PXDBDecimalAttribute'。
我不明白为什么会这样......
protected virtual void xTACOpenSourceDetail_RowSelected(PXCache sender, PXRowSelectedEventArgs e)
{
var osd = (PXCache)sender;
foreach (PXDBDecimalAttribute attribute in this.Caches<xTACOpenSourceDetail>().GetAttributes("Number1"))
{
PXDBDecimalAttribute someAttribute = attribute as PXDBDecimalAttribute;
if (someAttribute != null)
{
someAttribute.DBProperties._precision = 4;
}
}
}
答案 0 :(得分:0)
我刚刚在销售订单屏幕上尝试了以下代码,它似乎正常运作!
var props = typeof(SOOrder).GetProperties().Where(prop => Attribute.IsDefined(prop, typeof(PXDecimalAttribute)));
foreach (System.Reflection.PropertyInfo item in props)
{
PXDecimalAttribute.SetPrecision(this.Base.Caches[typeof(SOOrder)], item.Name, 1);
}
您可能需要更改此设置以匹配您的DAC。