我们正在尝试在自定义页面中实现“ InventoryCD”(字符串)字段(而不是Inventory ID Int字段)。我们需要这个InventoryCD字段像库存项目InventoryCD字段(段显示的字段掩码和现有项目的选择器)一样工作。当前问题是相同的aspx PXSegmentMask和DAC属性不能正常工作。我们在字段上使用InventoryRawAttribute的方式与为InventoryItem.InventoryCD附加的InventoryItemMaint缓存完全相同。唯一的例外是库存CD字段不是我们自定义页面中的键。
我们的问题是,段遮罩的库存CD字段仅在我们不输入或不关注该字段时显示(用户必须单击移动到另一个字段)。这使用户难以跟踪他们要输入值的细分。所以我的问题是我们缺少什么?
到目前为止,这是我们所做的:
(1)DAC-InventoryCD(与附加的InventoryItemMaint缓存中的InventoryItem.InventoryCD相同-除了IsKey = false):
public abstract class inventoryCD : PX.Data.IBqlField
{}
protected String _InventoryCD;
[PXDefault()]
[InventoryRaw(typeof(Where<InventoryItem.stkItem, Equal<True>>), DisplayName = "Inventory ID", Filterable = true)]
public virtual String InventoryCD
{
get
{
return this._InventoryCD;
}
set
{
this._InventoryCD = value;
}
}
(2)页-库存CD(从库存项目IN202500复制):
<px:PXSegmentMask ID="edInventoryCD" runat="server" DataField="InventoryCD"
DataSourceID="ds" AutoRefresh="true" >
<GridProperties FastFilterFields="InventoryCD,Descr" />
</px:PXSegmentMask>
这是我所看到的结果的示例(请参见下图)。请注意输入值或单击字段时字段的外观。在我们的自定义页面上,单击“库存CD”字段不会显示任何分段分隔。在“库存项目”页面上执行相同操作将显示分段的分隔,以便用户可以跟踪分段。我们如何使分段显示在我们的自定义页面中起作用?
编辑:如果在InventoryRawAttribute中将ValidComboRequired = true设置为掩码,则掩码将正确显示为库存项目,但是您松开了所有项目的选择器,然后该选择器成为了每个项目段值的选择器(使问题更糟)。仅供参考,以防有人看到我需要的某种类型的组合,因为它可能与ValidComboRequired有关(true时为掩码,false时为选择器)。
EDIT2:尝试使字段成为键(但不是DAC中的唯一键)并且没有区别
最佳答案
要获取输入掩码,可以在aspx中将AutoComplete
设置为false
而不自定义现成的InventoryRaw属性。
例:
using PX.Data;
using PX.Objects.IN;
namespace PXDemoPkg
{
public class INSetupDemoExt : PXCacheExtension<INSetup>
{
public abstract class usrInventoryID : IBqlField { }
#region UsrInventoryID
[PXDefault]
[PXUIField(DisplayName = "InventoryID")]
[InventoryRaw(typeof(Where<InventoryItem.stkItem, Equal<True>>),
DisplayName = "Inventory ID", Filterable = true)]
public virtual string UsrInventoryID { get; set; }
#endregion
}
}
关于c# - 库存CD段掩码和选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43101489/