我可以自定义选择器来过滤所需的记录吗

时间:2019-12-05 18:43:57

标签: acumatica

此问题与先前回答的案例有关: Dynamically changing PXSelector in Acumatica

在这种情况下,效果很好,它会根据下拉列表动态更改选择器记录,该下拉列表指定要选择的记录。

我的问题是,当我想为“线索”选择器时,我在“线索”屏幕上看到有一个“线索ID”,或者在查看DAC源时是“ contactid”-没有上面的任何选择器(Lead ID选择器在查看DAC源代码时实际上如何工作都非常混乱)。由于动态选择器中的大多数选择器记录都使用CD和说明,因此我不确定如何根据contactid和显示名称获取潜在客户的记录集。

另一个问题是,使用此自定义选择器代码,我不确定如何过滤记录。例如,我可以选择“企业帐户”和“客户”。由于它们都来自BAccount表,因此如何在此动态选择器属性代码上放置where子句以进行类型过滤?我假设这段代码中会有某种方式添加过滤器:

    public IEnumerable GetRecords()
    {
        var selectedField = GetSelectedTableField(GetSelection());
        var selectedTable = BqlCommand.GetItemType(selectedField.Id);

        var select = BqlCommand.Compose(typeof(Select<>), selectedTable);

        var cmd = BqlCommand.CreateInstance(select);
        PXView view = new PXView(_Graph, true, cmd);

        foreach (var val in view.SelectMulti())
        {
            var id = (string)view.Cache.GetValue(val, selectedField.Id.Name);
            var description = view.Cache.GetValue(val, selectedField.Description.Name).ToString();

            yield return new TableDummy { Id = id.TrimEnd(), Description = description };
        }
    }

0 个答案:

没有答案