public override void CacheAttached(PXCache sender) { base.CacheAttached(sender); PXButtonDelegate del = delegate(PXAdapter adapter) { PXCache cache = adapter.View.Graph.Caches[typeof(SOLineSplit)]; if (cache.Current != null) { object val = cache.GetValueExt(cache.Current, _FieldName); PXLinkState state = val as PXLinkState; if (state != null) { helper.NavigateToRow(state.target.FullName, state.keys, PXRedirectHelper.WindowMode.NewWindow); } else { helper.NavigateToRow((Guid?)cache.GetValue(cache.Current, _FieldName), PXRedirectHelper.WindowMode.NewWindow); } } return(adapter.Get()); }; string ActionName = sender.GetItemType().Name + "$" + _FieldName + "$Link"; sender.Graph.Actions[ActionName] = (PXAction)Activator.CreateInstance(typeof(PXNamedAction <>).MakeGenericType(typeof(SOOrder)), new object[] { sender.Graph, ActionName, del, new PXEventSubscriberAttribute[] { new PXUIFieldAttribute { MapEnableRights = PXCacheRights.Select } } }); }
public override void FieldSelecting(PXCache sender, PXFieldSelectingEventArgs e) { SOLineSplit row = e.Row as SOLineSplit; if (row != null && !string.IsNullOrEmpty(row.PONbr)) { e.ReturnValue = GetEntityRowID(sender.Graph.Caches[typeof(POOrder)], new object[] { row.POType, row.PONbr }); e.ReturnState = PXLinkState.CreateInstance(e.ReturnState, typeof(POOrder), new object[] { row.POType, row.PONbr }); } else if (row != null && !string.IsNullOrEmpty(row.ShipmentNbr)) { e.ReturnValue = GetEntityRowID(sender.Graph.Caches[typeof(SOShipment)], new object[] { row.ShipmentNbr }); e.ReturnState = PXLinkState.CreateInstance(e.ReturnState, typeof(SOShipment), new object[] { row.ShipmentNbr }); } else if (row != null && !string.IsNullOrEmpty(row.SOOrderNbr)) { e.ReturnValue = GetEntityRowID(sender.Graph.Caches[typeof(SOOrder)], new object[] { row.SOOrderType, row.SOOrderNbr }); e.ReturnState = PXLinkState.CreateInstance(e.ReturnState, typeof(SOOrder), new object[] { row.SOOrderType, row.SOOrderNbr }); } else if (row != null && !string.IsNullOrEmpty(row.POReceiptNbr)) { e.ReturnValue = GetEntityRowID(sender.Graph.Caches[typeof(POReceipt)], new object[] { row.POReceiptType, row.POReceiptNbr }); e.ReturnState = PXLinkState.CreateInstance(e.ReturnState, typeof(POReceipt), new object[] { row.POReceiptType, row.POReceiptNbr }); } else { base.FieldSelecting(sender, e); } }
public static PXFieldState CreateInstance(object value, Type target, object[] keys) { PXLinkState state = value as PXLinkState; if (state == null) { PXFieldState field = value as PXFieldState; if (field != null && field.DataType != typeof(object) && field.DataType != typeof(string)) { return(field); } state = new PXLinkState(value); } state._DataType = typeof(string); if (target != null) { state._target = target; } if (keys != null) { state._keys = keys; } return(state); }