将自定义选择器添加到网格



我在将自定义字段的选择器添加到网格时遇到问题。我有很多问题,我有点迷茫。

我们需要在AR302000屏幕上的"申请文件"选项卡中添加一个选择器(财务 -> 可接收帐户 ->付款和应用程序)。此选择器将基于我们添加到 ARRegister 的自定义字段。

public abstract class usrUploadDocNbr : IBqlField { }
[PXDBString(15)]
[PXUIField(DisplayName = Messages.UploadDocNbr)]
public virtual string UsrUploadDocNbr { get; set; }

我没有用 PXSelector 标签来装饰它,因为我们大部分时间都像文本框一样使用此字段。从那里,我将其添加到上面提到的AR302000网格中,但该字段始终被禁用。当我查看可添加到网格的字段时,有ARInvoice__UsrUploadDocNbrARRegisterAlias__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 属性进行装饰)。

最新更新