SOLine詳細グリッドの検索セレクタに代替IDフィールドを追加しようとしています。次のように私のコードは:代替IDフィールドをSOLineグリッドの在庫IDセレクタに追加
[PXNonInstantiatedExtension]
public class SO_SOLine_ExistingColumn : PXCacheExtension<PX.Objects.SO.SOLine>
{
#region InventoryID
[PXMergeAttributes(Method = MergeMethod.Append)]
[PXSelector(typeof(Search2<InventoryItem.inventoryCD, LeftJoin<INItemXRef, On<InventoryItem.inventoryID, Equal<INItemXRef.inventoryID>>>>),
typeof(PX.Objects.IN.InventoryItem.inventoryCD),
typeof(PX.Objects.IN.INItemXRef.alternateID),
typeof(PX.Objects.IN.InventoryItem.descr),
typeof(PX.Objects.IN.InventoryItem.itemClassID),
typeof(PX.Objects.IN.InventoryItem.itemStatus),
typeof(PX.Objects.IN.InventoryItem.itemType),
typeof(PX.Objects.IN.InventoryItem.baseUnit),
typeof(PX.Objects.IN.InventoryItem.salesUnit),
typeof(PX.Objects.IN.InventoryItem.purchaseUnit),
typeof(PX.Objects.IN.InventoryItem.basePrice))]
public int? InventoryID { get; set; }
#endregion
}
public void SOLine_InventoryID_CacheAttached(PXCache sender)
{
}
これは簡単に選択する代替IDフィールドを追加し、おそらく第二のために、選択されたときに適切なインベントリCDを返し、その後インベントリCDは、整数IDを変更し、 IDが認識されないので、もちろんエラーインジケータが表示されます。
お返事いただきありがとうございます。 パトリック - 代替キーは正しい在庫CDを返しますが、システムにInventoryIDが存在しないというエラーが表示されます。 Ruslan - 私の顧客のために、セレクターの各レコードに別々のAlternateIDを付けてInventoryIDを繰り返す必要があります。私は繰り返し試しましたが、あなたがすでに認識していると確信していますので、あなたが提供したコードを変更することができませんでした。 – GeorgeM
George、元の試み(Patrickの提案に従って更新された場合でも)重複したPXSelectorAttribute。実際には、インベントリCDがセグメント化されたキーであるため、インベントリIDをPXSelectorAttributeでデコレートするのは妥当ではありません。セグメント化されたキーに対してはPXDimensionSelectorAttributeのみが許可されます。 – RuslanDev
追加のコメント:セレクタ内の各レコードの個別のAlternateIDでInventoryIDを繰り返しても、選択されたAlternateIDにもかかわらず、セレクタは常に最初に検出されたInventory CDをハイライト表示するため、 INItemXRef DACに対してカスタムセレクタフィールドを作成し、コード内にインベントリIDを設定することもできないようです:InventoryIDは5です! INItemXRef DAC用に定義されたキーフィールド。先に示唆したソリューションは、顧客が要求したものに可能な限り近づけるための唯一の受け入れ可能な選択肢のようです。 – RuslanDev