如何使SelectFirstNode在Acumatica PXTreeView中始终工作?

如何使SelectFirstNode在Acumatica PXTreeView中始终工作?,acumatica,Acumatica,我在Acumatica中创建了一个屏幕,顶部有一个过滤器,当它被更改时,将填充PXTreeView。我已将属性SelectFirstNode设置为true。第一次加载时,第一个节点被正确选择。但是,如果我单击树的第4个节点,然后更改过滤器,它将加载一个新树,但第4个节点已被选中。(通常这不是什么大问题,但有其他表依赖于所选节点,因此未正确清除) 我希望它在重建树时选择第一个节点。是否有一种方法可以在过滤器更改时调用,以完全清除并刷新树视图,从而在重建树时选择第一个节点 ASPX文件 示例Q

我在Acumatica中创建了一个屏幕,顶部有一个过滤器,当它被更改时,将填充PXTreeView。我已将属性SelectFirstNode设置为true。第一次加载时,第一个节点被正确选择。但是,如果我单击树的第4个节点,然后更改过滤器,它将加载一个新树,但第4个节点已被选中。(通常这不是什么大问题,但有其他表依赖于所选节点,因此未正确清除)

我希望它在重建树时选择第一个节点。是否有一种方法可以在过滤器更改时调用,以完全清除并刷新树视图,从而在重建树时选择第一个节点

ASPX文件


示例Q.cs

    public SelectFrom<TreeNode>
        .Where<TreeNode.parentID.IsEqual<Argument.AsString>
            .And<TreeNode.lineNbr.IsEqual<Argument.AsInt>>
            .And<TreeNode.categoryNbr.IsEqual<Argument.AsInt>>
            .And<TreeNode.detailLineNbr.IsEqual<Argument.AsString>>>.View Tree1;

    protected virtual IEnumerable tree1([PXString]string parentID, [PXInt]int? lineNbr, [PXInt]int? categoryNbr, [PXString]string detailLineNbr)
    {
        if(parentID == null)
       {
           var parents = SelectFrom<Parents>
           .Where<Parent.parentID.IsEqual<Filter.parentID.FromCurrent>>.View.Select(this);
           foreach(var parent in parents>
           {
               //create new Treenode item
               yield return item
           }
        }
        else if(lineNbr == null)
        {
           //lookup and loop though next level
           yield return item
        }
        else if(categoryNbr == null)
        {
           //lookup and loop through categories
           yield return item
        }
        else if(detailLineNbr == null)
        {
           //lookup and loop through details
           yield return item
        }
     }
public从中选择
.Where.View树1;
受保护的虚拟IEnumerable树1([PXString]string parentID,[PXInt]int?lineNbr,[PXInt]int?categoryNbr,[PXString]string detailLineNbr)
{
if(parentID==null)
{
var parents=SelectFrom
.Where.View.Select(此);
foreach(父项中的var父项>
{
//创建新的Treenode项
收益回报项目
}
}
else if(lineNbr==null)
{
//查找并循环下一级
收益回报项目
}
else if(categoryNbr==null)
{
//查找和循环类别
收益回报项目
}
else if(detailLineNbr==null)
{
//查找并循环查看详细信息
收益回报项目
}
}

当我更改Filter.parentID时,会调用tree1委托并正确填充树,但所选节点仍保持先前选择的节点,不会按预期返回到第一个节点。

我希望看到您的源代码,以便向您提供建议您如何填充PXTreeView?源代码会有所帮助。我将ee如果我能拿出源代码的所有相关部分并发布它们。可能会很长。我希望看到你的源代码,以便向你提供建议你如何填充PXTreeView?源代码会有帮助。我会看看是否能拿出源代码的所有相关部分并发布它们。可能会很长。
    public SelectFrom<TreeNode>
        .Where<TreeNode.parentID.IsEqual<Argument.AsString>
            .And<TreeNode.lineNbr.IsEqual<Argument.AsInt>>
            .And<TreeNode.categoryNbr.IsEqual<Argument.AsInt>>
            .And<TreeNode.detailLineNbr.IsEqual<Argument.AsString>>>.View Tree1;

    protected virtual IEnumerable tree1([PXString]string parentID, [PXInt]int? lineNbr, [PXInt]int? categoryNbr, [PXString]string detailLineNbr)
    {
        if(parentID == null)
       {
           var parents = SelectFrom<Parents>
           .Where<Parent.parentID.IsEqual<Filter.parentID.FromCurrent>>.View.Select(this);
           foreach(var parent in parents>
           {
               //create new Treenode item
               yield return item
           }
        }
        else if(lineNbr == null)
        {
           //lookup and loop though next level
           yield return item
        }
        else if(categoryNbr == null)
        {
           //lookup and loop through categories
           yield return item
        }
        else if(detailLineNbr == null)
        {
           //lookup and loop through details
           yield return item
        }
     }