Acumatica-使用不同字段的值填充字段

时间:2018-08-10 15:10:43

标签: acumatica

我正在尝试将屏幕上的其他字段组合在一起,其中一些是usr字段。我正在跟踪中获取输出,但是在我的情况下,它只是null或破折号。即使破折号仍在输出,它也不会更新到我想要字符串存储的字段。 这是我的代码:

protected void InventoryItem_Descr_FieldDefaulting(PXCache cache, PXFieldDefaultingEventArgs e)
    {

      var row = (InventoryItem)e.Row;
      Combined.StockItem.InventoryItemExt rowExt = PXCache<InventoryItem>.GetExtension<Combined.StockItem.InventoryItemExt>(row); 
      if (row == null) return;
      if (row != null) {
      string style = row.ItemClassID;
      string metalColor = rowExt.UsrMetalColor;
      string metalType = rowExt.UsrMetalType;
      string diaQuality = rowExt.UsrDiamondQuality;
      string gemColor = rowExt.UsrCenterColor;
      string template = "{0}-{1}-{2}-{3}-{4}";
      string message = string.Format(template, style, metalColor, metalType, diaQuality, gemColor);
      PXTrace.WriteInformation("{0}", message);
      e.NewValue = message;
      }
    }

和跟踪:

Information:    ----

我要提取的值确实具有都存储在数据库中的值,但是我希望在输入字段时动态生成它。

我也尝试过e.NewValuecache.SetValueExt,并使其等于row.Descr = message的消息,以使字符串显示为该字段值。

任何输入都会有所帮助。

1 个答案:

答案 0 :(得分:0)

将您的代码置于RowUpdated事件下,这应该对您有用。

protected void InventoryItem_RowUpdated(PXCache cache, PXRowUpdatedEventArgs e, PXRowUpdated InvokeBaseHandler)
        {
            if (InvokeBaseHandler != null)
                InvokeBaseHandler(cache, e);
            var row = (InventoryItem)e.Row;
            Combined.StockItem.InventoryItemExt rowExt = PXCache<InventoryItem>.GetExtension<Combined.StockItem.InventoryItemExt>(row); 
            if (row == null) return;
            if (row != null) {
              string style = row.ItemClassID;
              string metalColor = rowExt.UsrMetalColor;
              string metalType = rowExt.UsrMetalType;
              string diaQuality = rowExt.UsrDiamondQuality;
              string gemColor = rowExt.UsrCenterColor;
              string template = "{0}-{1}-{2}-{3}-{4}";
              string message = string.Format(template, style, metalColor, metalType, diaQuality, gemColor);
              PXTrace.WriteInformation("{0}", message);
              cache.SetValueExt<InventoryItem.descr>(row, message);

           }
        }