【问题标题】:Adding custom selector to a grid将自定义选择器添加到网格
【发布时间】:2018-02-01 23:21:25
【问题描述】:

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

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

但出现了另一个问题 - Reference 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”无效

在这一点上,我很迷茫。我确信我做错了很多事情,只是不确定是什么。

【问题讨论】:

    标签: acumatica


    【解决方案1】:

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

    [PXSelector(typeof(ARRegister.refNbr), 
    

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

    第二: 留言

    列名“UsrUploadDocNbr”无效

    当您尚未在数据库的表中创建字段时,大部分会显示(如果该字段用 PXDB... 类似属性装饰)。

    【讨论】:

      猜你喜欢
      • 2011-12-04
      • 1970-01-01
      • 2013-12-26
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-28
      • 1970-01-01
      相关资源
      最近更新 更多