将数据插入自定义 DAC 仅在用户与 DAC 中的字段交互后出现
Inserting data to Custom DAC only appearing after user interacts with a field from the DAC
当我从 SOOrderEntry->Shipment->Invoice 创建新发票或准备发票时,我在 SOInvoiceEntry.cs 上遇到问题,直到用户单击另一个相关字段后,才会输入 invoiceNbr到那个 DAC
在按下与 DAC 关联的字段之前
按下与DAC关联的字段后
我创建了一个名为 UsrKSFSCCom 的新 DAC
在dac的众多isKey字段中有一个
[PXDBString(50, IsKey = true, IsUnicode = true, InputMask = "")]
[PXDBDefault(typeof(ARInvoice.refNbr))]
[PXUIField(DisplayName = "InvoiceNbr")]
public string UsrInvoiceNbr { get; set; }
public class usrInvoiceNbr : IBqlField{}
我有一个 ARInvoice_Rowselecting 事件处理程序设置如下
protected virtual void ARInvoice_RowSelecting(PXCache sender, PXRowSelectingEventArgs e, PXRowSelecting InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(sender, e);
ARRegister row = (ARRegister)e.Row;
if (row == null) return;
ARRegisterExt rowExt = PXCache<ARRegister>.GetExtension<ARRegisterExt>(row);
ARTran invoiceCust = PXSelect<ARTran,
Where<ARTran.refNbr,
Equal<Required<ARTran.refNbr>>>>.Select(Base, row.RefNbr);
if (invoiceCust == null)
return;
SOOrder salesOrd = PXSelect<SOOrder,
Where<SOOrder.orderNbr,
Equal<Required<SOOrder.orderNbr>>>>.Select(Base, invoiceCust.SOOrderNbr);
UsrKSFSCCom fscComDef = PXSelect<UsrKSFSCCom,
Where<UsrKSFSCCom.usrInvoiceNbr,
Equal<Current<ARInvoice.refNbr>>>>.Select(Base, row.RefNbr);
if (salesOrd == null)
return;
SOOrderExt saleOrdExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(salesOrd);
fscComDef.UsrInRep = saleOrdExt.UsrInRep;
fscComDef.UsrInCom = saleOrdExt.UsrInCom;
fscComDef.UsrManRep = saleOrdExt.UsrManRep;
fscComDef.UsrManCom = saleOrdExt.UsrManCom;
fscComDef.UsrMiscRep = saleOrdExt.UsrMiscRep;
fscComDef.UsrMiscCom = saleOrdExt.UsrMiscCom;
fscComDef.UsrOutRep = saleOrdExt.UsrOutRep;
fscComDef.UsrOutCom = saleOrdExt.UsrOutCom;
fscComDef.UsrIndirectCust = saleOrdExt.UsrIndirectCust;
fscComDef.UsrOverBool = saleOrdExt.UsrOverBool;
fscComDef.UsrOverAmt = saleOrdExt.UsrOverAmt;
fscComDef.UsrOverageCom = saleOrdExt.UsrOverageCom;
}
问题是 RowSelecting 事件处理程序在一种情况下工作,用户必须单击关联的字段之一,然后才会显示所选行中的记录。我是否通过 PXDefault 错误地定义了默认值?感谢任何输入,谢谢。
根据 Dmitry 的建议,在 RowSelecting 事件处理程序的末尾添加此 Base.Caches[typeof(UsrKSFSCCom)].Update(fscComDef) 有效。
当我从 SOOrderEntry->Shipment->Invoice 创建新发票或准备发票时,我在 SOInvoiceEntry.cs 上遇到问题,直到用户单击另一个相关字段后,才会输入 invoiceNbr到那个 DAC
在按下与 DAC 关联的字段之前
按下与DAC关联的字段后
我创建了一个名为 UsrKSFSCCom 的新 DAC
在dac的众多isKey字段中有一个
[PXDBString(50, IsKey = true, IsUnicode = true, InputMask = "")]
[PXDBDefault(typeof(ARInvoice.refNbr))]
[PXUIField(DisplayName = "InvoiceNbr")]
public string UsrInvoiceNbr { get; set; }
public class usrInvoiceNbr : IBqlField{}
我有一个 ARInvoice_Rowselecting 事件处理程序设置如下
protected virtual void ARInvoice_RowSelecting(PXCache sender, PXRowSelectingEventArgs e, PXRowSelecting InvokeBaseHandler)
{
if (InvokeBaseHandler != null)
InvokeBaseHandler(sender, e);
ARRegister row = (ARRegister)e.Row;
if (row == null) return;
ARRegisterExt rowExt = PXCache<ARRegister>.GetExtension<ARRegisterExt>(row);
ARTran invoiceCust = PXSelect<ARTran,
Where<ARTran.refNbr,
Equal<Required<ARTran.refNbr>>>>.Select(Base, row.RefNbr);
if (invoiceCust == null)
return;
SOOrder salesOrd = PXSelect<SOOrder,
Where<SOOrder.orderNbr,
Equal<Required<SOOrder.orderNbr>>>>.Select(Base, invoiceCust.SOOrderNbr);
UsrKSFSCCom fscComDef = PXSelect<UsrKSFSCCom,
Where<UsrKSFSCCom.usrInvoiceNbr,
Equal<Current<ARInvoice.refNbr>>>>.Select(Base, row.RefNbr);
if (salesOrd == null)
return;
SOOrderExt saleOrdExt = PXCache<SOOrder>.GetExtension<SOOrderExt>(salesOrd);
fscComDef.UsrInRep = saleOrdExt.UsrInRep;
fscComDef.UsrInCom = saleOrdExt.UsrInCom;
fscComDef.UsrManRep = saleOrdExt.UsrManRep;
fscComDef.UsrManCom = saleOrdExt.UsrManCom;
fscComDef.UsrMiscRep = saleOrdExt.UsrMiscRep;
fscComDef.UsrMiscCom = saleOrdExt.UsrMiscCom;
fscComDef.UsrOutRep = saleOrdExt.UsrOutRep;
fscComDef.UsrOutCom = saleOrdExt.UsrOutCom;
fscComDef.UsrIndirectCust = saleOrdExt.UsrIndirectCust;
fscComDef.UsrOverBool = saleOrdExt.UsrOverBool;
fscComDef.UsrOverAmt = saleOrdExt.UsrOverAmt;
fscComDef.UsrOverageCom = saleOrdExt.UsrOverageCom;
}
问题是 RowSelecting 事件处理程序在一种情况下工作,用户必须单击关联的字段之一,然后才会显示所选行中的记录。我是否通过 PXDefault 错误地定义了默认值?感谢任何输入,谢谢。
根据 Dmitry 的建议,在 RowSelecting 事件处理程序的末尾添加此 Base.Caches[typeof(UsrKSFSCCom)].Update(fscComDef) 有效。