我需要在Stock Components网格的Kit Assembly屏幕(IN307000)中将InventoryItem属性作为列。
我能够在网格上获取属性列,但不能获取其值。任何人都可以建议下面的代码中缺少什么。
这是我写的代码 -
public class PXAddAtttributeColumns : CRAttributesFieldAttribute
{
string[] _names;
public PXAddAtttributeColumns(string[] names, Type classID, Type noteID)
: base(classID, noteID)
{
_names = names;
}
public override void CacheAttached(PXCache sender)
{
this._IsActive = true;
base.CacheAttached(sender);
}
protected override void AttributeFieldSelecting(PXCache sender, PXFieldSelectingEventArgs e, PXFieldState state, string attributeName, int idx)
{
if (_names.Any(attributeName.Equals))
{
state.DisplayName = (!String.IsNullOrEmpty(state.DisplayName)) ? (state.DisplayName.Replace("$Attributes$-", "")) : attributeName;
state.Visible = true;
state.Visibility = PXUIVisibility.Dynamic;
}
base.AttributeFieldSelecting(sender, e, state, attributeName, idx);
}
}
public class INComponentTranExtension : PXCacheExtension<INComponentTran>
{
public abstract class itemAttributes : IBqlField { }
[PXAddAtttributeColumns(new[] { "Attrib101" }, typeof(InventoryItem.itemClassID), typeof(INComponentTran.noteID))]
public virtual string[] ItemAttributes { get; set; }
}
&#13;
注意:我使用的是Acumatica ver 6.10.0956
答案 0 :(得分:1)
您需要在ItemAttributes
DAC的缓存扩展中声明PXAddAtttributeColumns
字段InventoryItem
属性。
这些属性与InventoryItem
实体相关,因此您需要引用NoteID
DAC的ClassID
和InventoryItem
。只要与网格绑定的视图与InventoryItem
DAC一起使用(在您的情况下,数据视图为Components
并且内部联接为InventoryItem
DAC),就会获取属性信息。
public class InventoryItemDemoPXExt : PXCacheExtension<InventoryItem>
{
public abstract class itemAttributes : IBqlField { }
[PXAddAtttributeColumns(new[] { "COLOR", "CONFIGURAB", "PIXELSIZE", "WIDEANGLE" },
typeof(InventoryItem.itemClassID),
typeof(InventoryItem.noteID))]
public virtual string[] ItemAttributes { get; set; }
}
确保为Framework AutoGenerateColumns="AppendDynamic"
控件指定PXGrid
以动态生成属性列。
字段将显示如下: