我正在尝试将屏幕上的其他字段组合在一起,其中一些是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.NewValue
,cache.SetValueExt
,并使其等于row.Descr = message
的消息,以使字符串显示为该字段值。
任何输入都会有所帮助。
答案 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);
}
}