如何将列添加到选择器屏幕(PXSelector)?

时间:2016-05-10 13:39:31

标签: c# acumatica

我想在General Ledger中添加几列>期刊录入>批量选择屏幕。在我的具体情况下,我想添加Batch.CreatedByID和Batch.Description。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

选项1

打开选择器屏幕,按Ctrl + Alt +单击选择器屏幕进行检查,然后选择自定义数据字段。

Customize Selector

然后,单击工具栏中的“选择器列”。在那里,您可以通过从列表中选择列来添加列。单击工具栏中的保存,发布自定义,刷新网站,您的选择器应全部设置!

Add columns

选项2

要在选择器屏幕中添加列,您需要在屏幕图中声明CacheAttached方法。方法签名遵循以下语法:

protected virtual void DAC_FIELD_CacheAttached(PXCache cache)
{

}

原始DAC中应用的所有属性都不再被考虑,因此请确保将所有必要的属性放在该方法之上。 (版本5.10还有另一种方法,请参阅本文末尾的编辑)

[PXDBString(15, IsUnicode = true, IsKey = true, InputMask = ">CCCCCCCCCCCCCCC")]
[PXDefault()]
[PXUIField(DisplayName = "Batch Number", Visibility = PXUIVisibility.SelectorVisible)]
[BatchModule.Numbering()]
[PXFieldDescription]
//PXSelector() still to add
protected virtual void Batch_BatchNbr_CacheAttached(PXCache cache)
{

}

要在选择器屏幕中指定所需内容,请将PXSelector属性添加到CacheAttached方法。第一个参数是BQL语句,用于查询要在选择器屏幕中显示的数据。第二个参数是对我们有用的参数。这是一个params参数,您可以在其中指定所需的所有字段作为屏幕中的列。

// Not showing previsouly added attributes for simplicity...
[PXSelector(
    typeof(Search<Batch.batchNbr, 
                        Where<Batch.module, 
                                Equal<Current<Batch.module>>, 
                            And<Batch.draft, 
                                Equal<False>>>, 
                        OrderBy<Desc<Batch.batchNbr>>>),
    typeof(Batch.module),       //This field will be your first column
    typeof(Batch.batchNbr),     
    typeof(Batch.ledgerID),     
    typeof(Batch.finPeriodID),  
    typeof(Batch.status),       
    typeof(Batch.debitTotal),   
    typeof(Batch.creditTotal),  
    typeof(Batch.curyID),       
    typeof(Batch.createdByID),  
    typeof(Batch.description),  //This field is the last column to be shown
    Filterable = true
)]
protected virtual void Batch_BatchNbr_CacheAttached(PXCache cache)
{

}

以下是使用JournalEntry

上的图表扩展名的完整代码示例
using PX.Data;
using PX.Data.EP;

namespace PX.Objects.GL
{

    public class JournalEntry_Extension : PXGraphExtension<JournalEntry>
    {
        [PXDBString(15, IsUnicode = true, IsKey = true, InputMask = ">CCCCCCCCCCCCCCC")]
        [PXDefault()]
        [PXUIField(DisplayName = "Batch Number", Visibility = PXUIVisibility.SelectorVisible)]
        [BatchModule.Numbering()]
        [PXFieldDescription]
        [PXSelector(
            typeof(Search<Batch.batchNbr, 
                                Where<Batch.module, 
                                        Equal<Current<Batch.module>>, 
                                    And<Batch.draft, 
                                        Equal<False>>>, 
                                OrderBy<Desc<Batch.batchNbr>>>),
            typeof(Batch.module),
            typeof(Batch.batchNbr),
            typeof(Batch.ledgerID),
            typeof(Batch.finPeriodID),
            typeof(Batch.status),
            typeof(Batch.debitTotal),
            typeof(Batch.creditTotal),
            typeof(Batch.curyID),
            typeof(Batch.createdByID),
            typeof(Batch.description),
            Filterable = true
        )]
        protected virtual void Batch_BatchNbr_CacheAttached(PXCache cache)
        {

        }
    }
}

编辑:从版本5.10开始,您可以将原始属性与CacheAttached方法上的属性合并。 你可以这样做:

[PXMergeAttributes(Method = MergeMethod.Merge)]
//PXSelector() still to add
protected virtual void Batch_BatchNbr_CacheAttached(PXCache cache)
{

}
相关问题