filter - IronPython Spotfire:创建层次结构列并将关联的过滤器移动到 TableGroup.Subgroup
问题描述
我正在为 TIBCO Spotfire 编写 IronPython 脚本以创建新的层次结构列,然后将与层次结构关联的过滤器移动到 TableGroup.Subgroup。
在我的脚本中,我正在执行以下操作:
1. 检索表组“Result Table Group”
2. 检索数据表“Result Table”
3. 创建一个新的子组“Result hierarchy subgroup”
4. 循环遍历表中的所有过滤器组和
- 隐藏过滤器
- 为过滤器关联列创建层次结构列
- 尝试将过滤器移动到子组
以下是代码中的相关部分:
filterPanel = Document.ActivePageReference.FilterPanel
# get the correct tableGroup
for tableGroup in filterPanel.TableGroups:
if tableGroup.Name == "Result Table Group":
resultTableGroup = tableGroup
# get the correct dataTable
for table in Document.Data.Tables:
if table.Name == "Result Table":
resultDataTable = table
# create new subgroup
hierarchyfilterGroup = resultTableGroup.AddNewSubGroup("Result hierarchy subgroup")
filterPanel.InteractiveSearchPattern = ""
for filterHandle in filterPanel.FiltersMatchingSearchPattern:
tableGroupFilterHandle = resultTableGroup.GetFilter(filterHandle.FilterReference.Name)
if tableGroupFilterHandle != None:
tableGroupFilterHandle.Visible = False # hide filter in table group
# create a new hiearchy column
hierarchyColName = tableGroupFitlerHandle.FilterReference.Name + " - process hierarchy"
hierarchyExpressions = List[str]()
hierarchyExpressions.Add("[" + tableGroupFitlerHandle.FilterReference.Name + "]")
hierarchyExpressions.Add("[Process]")
hierarchy = HierarchyDefinition(HierarchyNestingMode.Nested, hierarchyExpressions)
resultDataTable.Columns.AddHierarchyColumn(hierarchyColName, hierarchy)
# try to get the hierarchy associated filter
hieararchyFilterHandle = tableGroup.GetFilter(hierarchyColName)
if hiearchyFilterHandle != None:
hierarchyfilterGroup.Add(hierarchyFilter.FilterReference)
但是, tableGroup.GetFilter(hierarchyColName)
总是返回None
层次结构的列。作为运行脚本的结果,我正确地获得了层次过滤器,并且我也正确地看到了子组,但是层次过滤器没有分类到子组中。
以下是我尝试过的其他一些事情:
- 在整个 FilterPanel 中搜索层次过滤器
FilterPanel.InteractiveSearchPattern = hierarchyColName
for filterHandle in filterPanel.FiltersMatchingSearchPattern:
...
--> 没有找到任何 MatchingFilters
- 在尝试查找过滤器之前刷新数据表
resultDataTable.Refresh()
...
-->对结果没有影响
- 在第一个循环之后使用单独的第二个循环来移动过滤器
你能帮我把层次过滤器移到新创建的子组吗?
先感谢您!
解决方案
终于想通了并留下答案,以防其他人被困在同一个地方。
filterPanel = Document.ActivePageReference.FilterPanel
# get the correct tableGroup
for tableGroup in filterPanel.TableGroups:
if tableGroup.Name == "Result Table Group":
resultTableGroup = tableGroup
# get the correct dataTable
for table in Document.Data.Tables:
if table.Name == "Result Table":
resultDataTable = table
# create new subgroup
hierarchyfilterGroup = resultTableGroup.AddNewSubGroup("Result hierarchy subgroup")
filterPanel.InteractiveSearchPattern = ""
for filterHandle in filterPanel.FiltersMatchingSearchPattern:
tableGroupFilterHandle = resultTableGroup.GetFilter(filterHandle.FilterReference.Name)
if tableGroupFilterHandle != None:
tableGroupFilterHandle.Visible = False # hide filter in table group
# create a new hiearchy column
hierarchyColName = tableGroupFitlerHandle.FilterReference.Name + " - process hierarchy"
hierarchyExpressions = List[str]()
hierarchyExpressions.Add("[" + tableGroupFitlerHandle.FilterReference.Name + "]")
hierarchyExpressions.Add("[Process]")
hierarchy = HierarchyDefinition(HierarchyNestingMode.Nested, hierarchyExpressions)
resultDataTable.Columns.AddHierarchyColumn(hierarchyColName, hierarchy)
colExists, hierarchyCol = resultDataTable.Columns.TryGetValue(hierarchyColName)
resultTableGroup.FilterCollectionReference.AddNewFilter(hierarchyCol)
# move the filter to the subgroup
hierarchyFilterHandle = resultTableGroup.GetFilter(hierarchyColName)
hierarchyFilterHandle.Visible = True
dynamicSubGroup.Add(hierarchyFilterHandle.FilterReference)
推荐阅读
- c# - 我在执行 selenium(C#) 脚本时面临“TypeInitializationException”
- c# - Python3、OpenCV 和 C#
- html - 为什么 min-height 在父 div 上不起作用?
- html - 为什么我的文本垂直而不是水平对齐?
- c++ - Getline 未读取 CSV 文件 C++ 的整行
- python - 带循环的范围变量
- c# - serialPort 中的 C# DtrEnable 和 RtsEnable
- python - 检查列表中的值是否在numpy数组的相应行中
- r - 顶点属性后的权重总和
- java - ResultSet If Null 语句