【发布时间】:2018-06-12 06:45:09
【问题描述】:
我创建了一个自定义项以将项目状态添加到 SOLine。图形代码和 DAC 编译得很好,没有错误。当我检查新的状态字段时,它只是空白。这是我的做法:
首先是 DAC:
public class SOLineExt : PXCacheExtension<PX.Objects.SO.SOLine>
{
#region ItemStatus
public abstract class itemStatus : PX.Data.IBqlField
{
}
protected string _ItemStatus;
[PXString()]
[PXDefault()]
[PXUIField(DisplayName = "Status", IsReadOnly = true)]
public virtual string ItemStatus
{
get
{
return this._ItemStatus;
}
set
{
this._ItemStatus = value;
}
}
#endregion
}
图表:
public class SOOrderEntryExt : PXGraphExtension<SOOrderEntry>
{
#region Event Handlers
protected void SOLine_RowSelecting(PXCache cache, PXRowSelectingEventArgs e,PXRowSelecting InvokeBaseHandler)
{
if(InvokeBaseHandler != null)
InvokeBaseHandler(cache, e);
var row = (SOLine)e.Row;
if (row == null) return;
InventoryItem item = PXSelect<InventoryItem, Where<InventoryItem.inventoryID, Equal<Required<SOLine.inventoryID>>>>.Select(Base, row.InventoryID);
if(item != null){
SOLineExt soLinesExt = row.GetExtension<SOLineExt>();
if (soLinesExt != null){
if (item.ItemStatus == 'AC')
soLinesExt.ItemStatus = "Active";
if (item.ItemStatus == 'NS')
soLinesExt.ItemStatus = "No Sales";
if (item.ItemStatus == 'NP')
soLinesExt.ItemStatus = "No Purchases";
if (item.ItemStatus == 'NR')
soLinesExt.ItemStatus = "No Request";
if (item.ItemStatus == 'IN')
soLinesExt.ItemStatus = "Inatctive";
if (item.ItemStatus == 'DE')
soLinesExt.ItemStatus = "Marked for Deletion";
}
}
}
#endregion
}
我为此使用了类似的方法将其他字段添加到网格中,这只是我遇到的问题。注意到我确实希望显示完整的状态名称,而不仅仅是两个字符代码。
【问题讨论】: