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

时间:2018-01-31 14:12:42

标签: acumatica

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

我们需要在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而不是“Upload Doc.Nbr。”)。

但是又出现了另一个问题 - Refernce 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'

此时此刻我很失落。我确信我做了很多错事,只是不确定它是什么。

1 个答案:

答案 0 :(得分:0)

第一: 您应该将typeof(Search<DAC.FIELD>)作为第一个参数提供给PXSelector。 所以改变这一行

[PXSelector(typeof(ARRegister.refNbr), 

[PXSelector(typeof(Search<ARRegister.refNbr>), 

第二: 消息

  

列名称无效&#39; UsrUploadDocNbr&#39;

当你没有在数据库表中创建字段时,

主要显示(如果字段用PXDB...类似的属性修饰)。