【问题标题】:Acumatica Dynamic MultiSelect DropdownAcumatica 动态多选下拉菜单
【发布时间】:2016-05-16 08:42:11
【问题描述】:

我有一个屏幕条目来存储交易数据,我想使用动态与 multiselect combobox 来选择状态和状态数据是从 table 中获取的,但是当一些选择的数据状态,存储的数据量与已选择的不匹配

我尝试了以下代码,但它对我不起作用。

 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;
    }
}

还有其他解决办法吗,抱歉我的英文不好,谢谢。

【问题讨论】:

  • 能否请您提供目标字段(状态)的确切属性集?我怀疑该字段不足以容纳所有值。我还注意到您字段中的值在末尾包含额外的空格。

标签: c# erp acumatica


【解决方案1】:

我注意到您对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

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-28
    • 1970-01-01
    • 2013-11-05
    相关资源
    最近更新 更多