2016-09-13 89 views
1

ユーザーがプロパティコントロールから複数の値を選択し、それらの値をフィルターに渡す方法を理解しようとしています。Spotfireスクリプトを使用してプロパティコントロールからフィルターに複数選択値を適用する

フィルタリングは2つの異なる関連テーブルに対して条件付きである必要があるため、プロパティコントロールに関連付けられたリストボックスを使用し、スクリプトでフィルタリングを処理する必要があります。

私は1つだけの選択を可能にする現在の作業バージョンを持っていますが、複数を選択できる必要があります。すべてのオプションでろ過

2つのテーブルは enter image description here

私は一度に1つの選択によってフィルタリングするために使用していたスクリプト選択1つのプログラムでろ過 enter image description here

2つのテーブルを選択します:

from Spotfire.Dxp.Application import Filters from 
Spotfire.Dxp.Application.Filters import CheckBoxFilter 

Filter1=Document.FilteringSchemes[0].Item[myDataTable].Item[myDataTable.Columns.Item["Program_Name"]].As[CheckBoxFilter]() 
Filter2=Document.FilteringSchemes[0].Item[myDataTable2].Item[myDataTable2.Columns.Item["Program_Name"]].As[CheckBoxFilter]() 

program=Document.Properties["SelectedProgram"] 

Filter1.IncludeEmpty = False for value in Filter1.Values: 
Filter1.Uncheck(value) 

Filter2.IncludeEmpty = False for value in Filter2.Values: 
Filter2.Uncheck(value) 

if program == "All": Filter1.Check(program) Filter2.IncludeEmpty = 
False for value in Filter2.Values:  Filter2.Check(value) if program 
<> "All": Filter1.Check(program) Filter2.Check(program) 

答えて

0

問題は、プログラムに複数の値があることです。選択された値のそれぞれを解析する別のforループを追加する

for programvalue in program: 
    if programvalue == "All": 
    Filter1.Check(programvalue) 
    Filter2.IncludeEmpty = False 
    for value in Filter2.Values:   
     Filter2.Check(value) 
    if programvalue <> "All": 
    Filter1.Check(programvalue) 
    Filter2.Check(programvalue) 
関連する問題