在Acumatica中,我希望为物料清单屏幕创建一个TreeView。这是当前屏幕的样子,我需要帮助填充左侧网格下方的树形结构。我希望树形结构的顶部值为BOM项目,然后每个项目下面都会打开组成该项目的材料。以下是我的代码。
<DataTrees>
<px:PXTreeDataMember TreeKeys="BOMID" TreeView="Nodes" />
<px:PXTreeDataMember TreeView="_AMBOMTree_Tree_" TreeKeys="OberNbr" />
<px:PXTreeDataMember TreeKeys="Key" TreeView="CacheTree" />
<px:PXTreeDataMember TreeKeys="Key" TreeView="EntityItems" />
</DataTrees>
这是针对数据树本身的。
<px:PXTreeSelector CommitChanges="True" SuppressLabel="False" ID="edGraphType" runat="server" DataField="GraphType" PopulateOnDemand="True"
ShowRootNode="False" TreeDataSourceID="ds" TreeDataMember="CacheTree" InitialExpandLevel="0" MinDropWidth="297" MaxDropWidth="500"
TextField="Name" Size="XL">
<Images>
<ParentImages Normal="tree@Folder" Selected="tree@FolderS" />
<LeafImages Normal="tree@Screen" Selected="tree@Screen" />
</Images>
<DataBindings>
<px:PXTreeItemBinding DataMember="CacheTree" TextField="Name" ValueField="SubKey" ImageUrlField="Icon" />
</DataBindings>
</px:PXTreeSelector>
这里是TreeSelector。现在我从另一个屏幕上把它拉出来,想知道它的工作原理。因为我希望Item显示在顶层,然后进入组成该Item的材料。如果选择了一个Item,我希望网格填充数据。我知道DataField = GraphType不正确,因为这是从另一个屏幕上拉出来的,但我不知道应该放什么值。
<px:PXTreeView ID="tree" runat="server" DataSourceID="ds" Height="500px" PopulateOnDemand="True" ShowRootNode="False"
ExpandDepth="1" AutoRepaint="true" Caption="Tree" AllowCollapse="true" PreserveExpanded="true">
<ToolBarItems>
<px:PXToolBarButton Tooltip="Reload Tree" ImageKey="Refresh">
<AutoCallBack Target="tree" Command="Refresh" />
</px:PXToolBarButton>
</ToolBarItems>
<AutoCallBack Target="grid" Command="Refresh" ActiveBehavior="True">
<Behavior RepaintControlsIDs="gridMatl" />
<Behavior RepaintControlsIDs="gridStep" />
<Behavior RepaintControlsIDs="gridTool" />
<Behavior RepaintControlsIDs="gridOvhd" />
</AutoCallBack>
<AutoSize Enabled="True" MinHeight="300" />
<DataBindings>
<px:PXTreeItemBinding DataMember="Nodes" TextField="Name" ValueField="AssignmentRouteID" ImageUrlField="Icon" />
</DataBindings>
</px:PXTreeView>
下面是树形视图本身。
如果有人能帮我编写这棵树,那太好了,或者至少指点一下方向。