F从网格扩展中获取表单字段

时间:2018-04-16 20:06:58

标签: acumatica

我在Prepare Replenishment表单中添加了一个字段,当用户在Replenishment Item网格中选择一行时,该字段需要更新。我如何访问该字段。我知道它在INReplenishmentFilterExt中,但我无法弄清楚如何访问扩展。

编辑#1:我能够获得该字段的值,但是当我使用cache.SetValue时,它不会在屏幕上更新。我正在尝试从Selected事件处理程序内部更新此过滤器扩展字段。

    import { Subject } from 'rxjs/Subject';
    import {debounceTime } from 'rxjs/operators
        debouncer= new Subject();

          constructor() {


           this.debouncer
            .debounceTime(1000)
            .subscribe((val) =>{ 
              console.log(val);
              this.courseInstance.id=ParseInt(val,10); 

            });
          }

        onDataChange(value) {
                 this.debouncer.next(value);
        }

1 个答案:

答案 0 :(得分:0)

您无法使用INReplenishmentItem的Cache设置Filter的值。 我编辑了我的答案,下面的代码应该有用。

//Always use virtual methods for Event Handlers
protected virtual void INReplenishmentItem_Selected_FieldUpdating(PXCache sender, PXFieldUpdatingEventArgs e)
{
    //Try not to use vars. Especially when you know the Type of the object
    INReplenishmentItem row = e.Row as INReplenishmentItem;

    if (row != null)
    {
        INReplenishmentFilter filter = Base.Filter.Current;
        INReplenishmentFilterExt filterExt = PXCache<INReplenishmentFilter>.GetExtension<INReplenishmentFilterExt>(filter);

        decimal poAmount = filterExt.UsrPOAmount ?? 0;
        decimal lastPrice = pvi.LastPrice ?? 0;//Not sure what pvi is
        decimal newPOAmount = poAmount + lastPrice;

        //"sender" is the cache that specifically stores the datatype of row
        //Therefor you cannot use it to update records of a different datatype
        //You also should not pass an Extension into the argument that should be the row object you are trying to update
        Base.Filter.Cache.SetValueExt<INReplenishmentFilterExt.usrPOAmount>(filter, newPOAmount);
    }
}