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