Acumatica动态多选下拉
问题描述:
我有一个画面条目存储交易数据,我想用动态的多选组合框选择状态和状态数据从表拍摄,但是当一些数据状态选择存储的数据的量不不匹配已被选择,Acumatica动态多选下拉
我有吨拥有以下代码,但对我来说不起作用。
public class StatusMultiStringListAttribute : PXStringListAttribute
{
public StatusMultiStringListAttribute() : base()
{
PXResultset<StatusTable> rslt = PXSelect<StatusTable>.Select(new PXGraph());
List<string> values = new List<string>();
List<string> labels = new List<string>();
foreach (PXResult<StatusTable> item in rslt)
{
BSMTStatus e = (StatusTable)item;
values.Add(e.StatusID);
labels.Add(e.Description);
}
this._AllowedValues = values.ToArray();
this._AllowedLabels = labels.ToArray();
MultiSelect = true;
}
}
有没有其他的解决办法,抱歉我的英文不好,谢谢。
答
我注意到您对http://asiablog.acumatica.com/2016/03/multiselect-combo-box.html的评论,并看到您发布了一些额外的代码。根据您的示例代码,我发现了两个问题:
首先,您从StatusTable DAC加载的值包含未修剪的尾随空格。您尚未提供StatusTable DAC的声明,但从屏幕截图假定此字段的IsFixed
属性设置为true
是安全的。通过这些设置,系统将在您的价值结束时添加空白区域。要保存在目标领域的空间,我会建议增加一个TRIM()的构造函数代码:
foreach (PXResult<StatusTable> item in rslt)
{
BSMTStatus e = (StatusTable)item;
values.Add(e.StatusID.Trim()); //Remove any white-space
labels.Add(e.Description);
}
其次,当你存储选定值的状态字段不够长,以适应多种选择。它目前被定义为20个字符([PXDBString(20, IsFixed=true)]
),甚至假设您删除了空白,您仍然将其限制为4个选项。我建议你将其更改为255,且还去除IsFixed=true
因为它并不需要此字段:
[PXDBString(255)]
[PXDefault]
[PXUIField(DisplayName = "Status")]
[StatusStringList]
public virtual string Status
可否请你提供确切的集合为目标字段(状态)的属性?我怀疑这个领域不够大,无法适应所有的价值。我还注意到,您的字段中的值在最后包含额外的空格。 – Gabriel