Nun habe ich schon gezeigt wie man ein Seitenfilter Schema aktiv schalten kann… Und hier seht ihr wie man einzelnen Filtereinstellungen hinzufügen kann.
In diesem Beispiel wird der Filter neu erstellt und eine Filtereinstellung hinzugefügt:
- Kriterium: Seitenbeschreibung
- Wert: Test
public class PageFilterExample { private const string SCHEME_NAME = "MyFilter"; private const string SETTINGS_PATH = "USER.PageBrowserGui.PageFilterScheme"; [DeclareAction("PageFilterExample")] public void Action() { try { // Remove filter if exists SchemeSetting schemeSetting = new SchemeSetting(); schemeSetting.Init(SETTINGS_PATH); if (schemeSetting.CheckIfSchemeExists(SCHEME_NAME)) { schemeSetting.RemoveScheme(SCHEME_NAME); } // Create filter MultiLangString mlName = new MultiLangString(); mlName.AddString(ISOCode.Language.L___, SCHEME_NAME); MultiLangString mlDescription = new MultiLangString(); mlDescription.AddString(ISOCode.Language.L___, "My Description"); schemeSetting.CreateScheme(SCHEME_NAME, mlName, mlDescription); SetSchemeSettings(); // Update page filter schemeSetting.SetLastUsed(SCHEME_NAME); new Settings().SetBoolSetting("USER.PageBrowserGui.PageFilterScheme.ApplyCheckBox", true, 0); EventParameterString eventParameterString = new EventParameterString(); eventParameterString.String = "RefreshPageFilter"; new EventManager().Send("RefreshPageFilter", eventParameterString); } catch (Exception exception) { var baseException = new BaseException("PageFilterExample: " + exception, MessageLevel.Error); baseException.FixMessage(); new Decider().Decide(EnumDecisionType.eOkDecision, exception.ToString(), "SetPageFilter", EnumDecisionReturn.eOK, EnumDecisionReturn.eOK, null, false, EnumDecisionIcon.eFATALERROR); } } private void SetSchemeSettings(int index = 0) { // Setup path: < is in the default schemes also, don't know why const string SETTINGS_PATH_SCHEME_SETTINGS = SETTINGS_PATH + "." + SCHEME_NAME + ".Data<."; // Set single (needed) settings SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "Value", "Test", index); // Search value SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "PropDescr", "11011;0", index); // page property id & index SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "Activ", true, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "CriteriaType", 0, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "IgnoreCase", false, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "Negation", false, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "Operator", 0, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "QuickFilter", false, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "RelationDescr", "0;0", index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "SingleValue", false, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "UseWildcards", true, index); SetSchemeSetting(SETTINGS_PATH_SCHEME_SETTINGS + "WholeText", true, index); } public void SetSchemeSetting(string settingsPath, object value, int index = 0) { // Add settings nodes (needed because SchemeSetting.Set don't create Settings) & Set filter entries var settings = new Settings(); if (value is bool) { settings.AddBoolSetting(settingsPath, new[] { (bool)value }, ISettings.CreationFlag.Insert); settings.SetBoolSetting(settingsPath, (bool)value, index); } else if (value is int) { var range = new[] { new Range { FromValue = 0, ToValue = 32768 } }; settings.AddNumericSetting(settingsPath, new[] { (int)value }, range, ISettings.CreationFlag.Insert); settings.SetNumericSetting(settingsPath, (int)value, 0); } else if (value is string) { settings.AddStringSetting(settingsPath, new string[] { }, new string[] { }, ISettings.CreationFlag.Insert); settings.SetStringSetting(settingsPath, value.ToString(), 0); } else if (value is MultiLangString) { settings.AddMultiLangStringDefault(settingsPath, new MultiLangString[] { }, new MultiLangString[] { }, ISettings.CreationFlag.Insert); settings.SetMultiLangStringSetting(settingsPath, (MultiLangString) value, 0); } else { throw new NotImplementedException("SetSchemeSetting: Unknow type --> " + value.GetType()); } } }
Vielen Dank für das Script.
Wie muss ich das Script erweitern, wenn ich z.B. nach 2 Eigenschaften mit einem oder Filtern möchte?
Z.B. Seitenbeschreibung Test oder Seitenbeschreibung Test_2
Einfach den Filter (Schema) anpassen. Ggf. weitere Filter erstellen.
Ich möchte gern wissen, was man eingeben muss um weitere Kriterien dem Schema hinzu zufügen.
Außerdem wäre es Interessant zu wissen, wie man zwischen den Kriterien ein ODER einfügt.
Hier müsstest Du mal den Einstellungsknoten im Debugger ansehen und das so nachbilden. Ist relativ kompliziert das herauszufinden.
Hallo Johann,
woher weißt Du, dass die Einstellungen unter “USER.PageBrowserGui.PageFilterScheme” zu finden sind? Gibt es dafür eine Übersicht?
Ich würde das Beispiel nämlich gerne auf den Optionsnavigator anwenden, finde aber den entsprechenden Settings-Path nicht.
Über einen Export der Einstellung bzw. des Schemas.