动态更改字段属性的字符串长度或小数精度

时间:2016-06-30 20:45:58

标签: acumatica

我正在尝试使用一个表中的设置数据来允许我动态地格式化字段/动态。我知道我可以根据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;
            }
        }

    }

1 个答案:

答案 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。