首页 > 解决方案 > 如何将第一个下拉值设置为网格中第一行的默认值,然后将第二个值设置为网格中第二行的默认值

问题描述

在“产品”下拉列表中,有 2 个值,第一个值(产品)将默认仅用于第一行,第二个值(联产品)将默认来自第二行。

我在 FieldDefaulting 事件中试过这个

    protected void TSFormulaProdsNCoProds_Product_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
    {
        var row = (TSFormulaProdsNCoProds)e.Row;
        if (row == null)
            return;
        if (TSFormProdsNCoProds.Select().Count == 0)
        {
            e.NewValue = "P";
        }
        else
        {
            e.NewValue = "C";
        }
    }

谁能给我一个建议?

标签: acumatica

解决方案


很可能您在级别上PXDefault装饰了属性。DAC在这种情况下,您需要设置Cancel标志以防止执行FieldDefaulting在属性中定义的事件处理程序。

例子 :-

protected void TSFormulaProdsNCoProds_Product_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
{
    var row = (TSFormulaProdsNCoProds)e.Row;
    if (row == null)
        return;

    e.NewValue = (TSFormProdsNCoProds.Select().Count == 0) ? "P" : "C";
    e.Cancel = true;
}

这在 中Example 5.2: Inserting a Default Detail Data Record进行了解释T200 Acumatica Framework Fundamental course

T200-示例 5.2


推荐阅读