我在将自定义字段的选择器添加到网格时遇到问题。我有很多问题,我有点迷茫。
我们需要在AR302000屏幕上的"申请文件"选项卡中添加一个选择器(财务 -> 可接收帐户 ->付款和应用程序)。此选择器将基于我们添加到 ARRegister 的自定义字段。
public abstract class usrUploadDocNbr : IBqlField { }
[PXDBString(15)]
[PXUIField(DisplayName = Messages.UploadDocNbr)]
public virtual string UsrUploadDocNbr { get; set; }
我没有用 PXSelector 标签来装饰它,因为我们大部分时间都像文本框一样使用此字段。从那里,我将其添加到上面提到的AR302000网格中,但该字段始终被禁用。当我查看可添加到网格的字段时,有ARInvoice__UsrUploadDocNbr和ARRegisterAlias__UsrUploadDocNbr。这对我来说是有道理的,但只是一点点。
当我尝试使用这些字段中的任何一个时,网格中的行将始终是只读的。从这里开始,我想我会尝试将字段添加到ARAdj,因为这是网格中许多字段的类型。我添加了以下代码:
public abstract class usrUploadDocNbr : IBqlField, IBqlOperand { }
[PXDBString(BqlField =typeof(ArRegisterExt.usrUploadDocNbr))]
[PXUIField(DisplayName = Messages.UploadBatchNbr, Enabled = true)]
[PXSelector(typeof(ARRegister.refNbr),
typeof(ARAdjust.ARInvoice.refNbr),
typeof(ARAdjust.ARInvoice.docDate),
typeof(ArRegisterExt.usrUploadDocNbr),
typeof(ARAdjust.ARInvoice.finPeriodID),
typeof(ARAdjust.ARInvoice.customerID),
typeof(ARRegister.customerLocationID),
typeof(PX.Objects.AR.Standalone.ARRegister.curyID),
typeof(ARRegister.curyOrigDocAmt),
typeof(ARRegister.curyDocBal),
typeof(PX.Objects.AR.Standalone.ARRegister.status),
typeof(ARAdjust.ARInvoice.dueDate),
typeof(ARAdjust.ARInvoice.invoiceNbr),
typeof(PX.Objects.AR.Standalone.ARRegister.docDesc),
SubstituteKey = typeof(ArRegisterExt.usrUploadDocNbr))]
public virtual string UsrUploadDocNbr { get; set; }
当我添加此字段时,选择器起作用了。我能够打开选择器窗口,但所有列名都是类型名称而不是带注释的名称(例如,usrUploadDocNbr 而不是"上传文档"。
但是另一个问题出现了 -引用 Nbr选择器不再工作。我们将 UsrUploadDocNbr 添加到 Reference Nbr 选择器中。代码如下:
[PXMergeAttributes(Method = MergeMethod.Append)]
[PXCustomizeSelectorColumns(
typeof(ARAdjust.ARInvoice.refNbr),
typeof(ARAdjust.ARInvoice.docDate),
typeof(ArRegisterExt.usrUploadDocNbr),
typeof(ARAdjust.ARInvoice.finPeriodID),
typeof(ARAdjust.ARInvoice.customerID),
typeof(ARRegister.customerLocationID),
typeof(PX.Objects.AR.Standalone.ARRegister.curyID),
typeof(ARRegister.curyOrigDocAmt),
typeof(ARRegister.curyDocBal),
typeof(PX.Objects.AR.Standalone.ARRegister.status),
typeof(ARAdjust.ARInvoice.dueDate),
typeof(ARAdjust.ARInvoice.invoiceNbr),
typeof(PX.Objects.AR.Standalone.ARRegister.docDesc))]
public virtual string AdjdRefNbr { get; set; }
弹出的错误读取(它确实在单个模态中显示两次相同的内容):
无效的列名"UsrUploadDocNbr">
无效的列名"UsrUploadDocNbr">
在这一点上,我很迷茫。我确信我做错了很多事情,只是不确定它是什么。
首先: 您应该将typeof(Search<DAC.FIELD>)
作为第一个参数提供给PXSelector
。 所以改变这条线
[PXSelector(typeof(ARRegister.refNbr),
自
[PXSelector(typeof(Search<ARRegister.refNbr>),
第二: 消息
无效的列名"UsrUploadDocNbr">
大多数情况下,当您尚未在数据库表中创建字段时,将显示(如果字段使用PXDB...
like 属性进行装饰)。