2016-08-16 4 views
2

Kann jemand bitte Iron Python-Skript zur Verfügung stellen mehrere Auswahllistenfilter (mit Suchoption) zu erstellen. Wenn ich auf die Schaltfläche klicke, in die mein Skript eingebettet ist, sollten die Daten für alle meine vier Datentabellen auf meiner Dashboard-Seite gefiltert werden.Iron Python Skript zum Erstellen von Filtern in Spotfire

Ich habe ein Skript geschrieben, aber es funktioniert, wenn nur eine Datentabelle vorhanden ist, ich habe einen Fehler, wenn ich versuche, den Filter für Daten in mehreren Datentabellen anzuwenden.

from Spotfire.Dxp.Applica‌​tion 
import Filters as filters 

CurPanel = Document.ActivePageR‌​eference.FilterPanel 
FilterA = CurPanel.TableGroups‌​[0].GetFilter("column‌​name") 
CheckBoxes = FilterA.FilterRefere‌​nce.As[filters.CheckB‌​oxFilter]() 
strCityL = Document.Properties[‌​"propertyname"] 
    for CheckBoxVal in CheckBoxes.Values: 
     CheckBoxes.Uncheck(C‌​heckBoxVal) 
    for strVal in strCityL: 
     CheckBoxes.Check(st‌​rVal) 

Above Skript ist für eine Datentabelle und ich kann meine Filterwerte

Dank

+0

Bitte geben Sie das Skript, das Sie bisher haben :) – scsimon

+0

von Spotfire.Dxp.Application Importfilter als Filter CurPanel = Document.ActivePageReference.FilterPanel FilterA = CurPanel.TableGroups [0] .GetFilter ("column") Checkboxes = FilterA.FilterReference.As [filters.CheckBoxFilter]() strCityL Document.Properties = [ "propertyname"] für CheckBoxVal in CheckBoxes.Values: CheckBoxes.Uncheck (CheckBoxVal) für strVal in strCityL: \t CheckBoxes.Check (strVal) Das obige Skript ist für eine Datentabelle und ich kann meine Filterwerte nicht durchsuchen. –

+0

Ich bin nicht großartig ar ironPy byt Jose und einige andere sind. Hier ist ein guter Link. http://spotfired.blogspot.com/2014/03/change-filters-programatically-from.html Hier sein Profil http://stackoverflow.com/users/922290/jleviaguirre ist @jleviaguirre – scsimon

Antwort

3

der folgende Code sollte man dort nicht suchen. Ich habe dokumentiert, so dass Sie für jede Zeile einen Kontext haben können, und hoffentlich reproduzieren Sie dies für jeden anderen Filter, den Sie brauchen. in der Tat, ich glaube, das einzige andere Filter, die wirklich sehr verschieden von diesem die RangeFilter ist, aber das ist eine andere Stelle irgendwo :)

""" 
update the specified ListBox filter selection based on a parameter 

Parameters to be created: 
table -- the string name of the data table that will be filtered 
column -- the string name of the column to filter 
      IMPORTANT: set this filter type to ListBox using the Filters panel 
values -- a CSV string of the values to be selected 
""" 

# get the data table reference 
dt = Document.Data.Tables[table] 
# format our values into a list 
vals = values.split(',') 

# for debugging; safe to remove 
print("values:") 
print(vals) 

# import the necessary Spotfire classes 
from Spotfire.Dxp.Application.Filters import ListBoxFilter, FilterPanel 

# using the default Filtering Scheme and the supplied Data Table name, get the filter by its Column name 
filter = Document.FilteringSchemes.DefaultFilteringSchemeReference[dt][column] 
# cast it as a ListBox filter 
lb = filter.As[ListBoxFilter]() 

# reset the filter to its default state 
lb.Reset() 
# set the values according to the script parameter 
lb.SetSelection(vals) 
# OPTIONAL: select (true) or deselect (false) the "(All)" option 
lb.IncludeAllValues = False 
# OPTIONAL: select (true) or deselect (false) the "(Empty values)" option 
lb.IncludeEmpty = False 

# for debugging: safe to remove 
print("filter selection:") 
print(filter) 

während es wirklich nur einen Weg zu einen Filter setzen, gibt es eine Reihe von Möglichkeiten, die Filterreferenz zu erhalten. Dieser Code (Zeile 23) ist, soweit ich es herausgefunden habe, der einfachste und am einfachsten zu lesende Code zum Auswählen von Filtern. Ihr Kilometerstand kann je nach Analyse und Anforderungen variieren.

+1

Ich wünschte, ich könnte zweimal zur Dokumentation einladen! – scsimon

Verwandte Themen