使用自定义处理按钮生成NoteID时出现问题

时间:2019-04-11 14:56:51

标签: acumatica

创建一个新的虚拟维护屏幕以启用对项目交叉引用的通用搜索,甚至可以创建新的DAC和BLC,甚至在屏幕上添加“处理”按钮,但是单击任何一个处理按钮时都没有任何反应(当前它会引发PXException)。最终,我需要使用“全部处理”(标记为“创建NoteID”)按钮来填写NoteID字段,这样我才可以实际使用通用搜索部分。

这是我的图表。 INItemXRef实际上是一个附加了NoteID字段的新的自定义DAC(没有其他更改,直接从数据库创建)。最终,我需要更新下面的代码以将随机值填充为空的NoteID,因此,如果对下一步有任何建议,在解决当前问题后也可以理解:

public class INItemXRefGraph : PXGraph<INItemXRefGraph>
  {
    public PXSelect<INItemXRef> INItemXRef;
    public PXSave<INItemXRef> Save;
    public PXFilter<INItemXRef> MasterView;

    [PXFilterable]
    public PXProcessing<INItemXRef, Where<INItemXRef.noteID, IsNull>> INDocumentList;

    public INItemXRefGraph()
    {
        INDocumentList.SetProcessDelegate(ReleaseDoc);
        INDocumentList.SetProcessAllCaption("Create NoteIDs");
    }

    public static void ReleaseDoc(System.Collections.Generic.List<INItemXRef> list)
    {
        throw new PXException("Hello World");
    }

1 个答案:

答案 0 :(得分:1)

尝试一下

public class INItemXRefGraph : PXGraph<INItemXRefGraph>
  {
    public PXSelect<INItemXRef> INItemXRef;
    public PXSave<INItemXRef> Save;
    public PXFilter<INItemXRef> MasterView;

    [PXFilterable]
    public PXProcessing<INItemXRef, Where<INItemXRef.noteID, IsNull>> INDocumentList;

    public INItemXRefGraph()
    {
        INDocumentList.SetProcessDelegate(
            delegate(System.Collections.Generic.List<INItemXRef> list)
            {
                System.Collections.Generic.List<INItemXRef> newlist = new System.Collections.Generic.List<INItemXRef>(list.Count);
                foreach (INItemXRef doc in list)
                {
                    newlist.Add(doc);
                }
                ReleaseDoc(newlist);
            }
        );
        INDocumentList.SetProcessAllCaption("Create NoteIDs");
    }

    public static void ReleaseDoc(System.Collections.Generic.List<INItemXRef> list)
    {
        throw new PXException("Hello World");
    }