如何将列添加到选择器屏幕 (PXSelector)?
How do I add columns to a selector screen (PXSelector)?
我想在“总帐”>“日记帐分录”>“批次选择”屏幕中添加几列。在我的具体情况下,我想添加 Batch.CreatedByID 和 Batch.Description.
我该怎么做?
选项 1
打开选择器屏幕,Ctrl + Alt + 单击选择器屏幕进行检查,然后选择自定义数据字段。
然后,单击工具栏中的“选择器列”。在那里您可以通过从列表中选择它们来添加列。单击工具栏中的保存,发布定制,刷新网站,您的选择器应该全部设置好!
选项 2
要将列添加到选择器屏幕,您需要在屏幕图表中声明 CacheAttached 方法。方法签名遵循以下语法:
protected virtual void DAC_FIELD_CacheAttached(PXCache cache)
{
}
将不再考虑在原始 DAC 中应用的所有属性,因此请确保将所有必要的属性放在该方法之上。 (5.10版本还有另一种方式,见文末编辑post)
[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)
{
}
我想在“总帐”>“日记帐分录”>“批次选择”屏幕中添加几列。在我的具体情况下,我想添加 Batch.CreatedByID 和 Batch.Description.
我该怎么做?
选项 1
打开选择器屏幕,Ctrl + Alt + 单击选择器屏幕进行检查,然后选择自定义数据字段。
然后,单击工具栏中的“选择器列”。在那里您可以通过从列表中选择它们来添加列。单击工具栏中的保存,发布定制,刷新网站,您的选择器应该全部设置好!
选项 2
要将列添加到选择器屏幕,您需要在屏幕图表中声明 CacheAttached 方法。方法签名遵循以下语法:
protected virtual void DAC_FIELD_CacheAttached(PXCache cache)
{
}
将不再考虑在原始 DAC 中应用的所有属性,因此请确保将所有必要的属性放在该方法之上。 (5.10版本还有另一种方式,见文末编辑post)
[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)
{
}