SOG-Helpcenter Logo SOG Business - Software

Verwendung des ObjectSelector-Controls zur Selektion von Daten ohne SQL


Der ObjectSelector-Control kann auch zur Selektion von Daten verwendet werden, die nicht aus einer SQL-Datenbank stammen. z.B. für die Abfrage eines Web-Services, der ggf. Abfrageparemeter gestattet.

Dazu muss vom Programmierer ein Objekt vom Typ "SOGDynamicSelectorHandler" erstellt werden. Über dessen Funktion "AddItem" können Selectoritems erstellt und hinzugefügt werden, die dem Benutzer später bei der Konfiguration eines ObjectSelectors zur Konfiguration angeboten werden.

Beispiel

        /// <summary>
        /// Dynamisches Auswahlelement
        /// </summary>
        [InputPrompt("DynSelect")]
        public SOGDynamicSelectorHandler SOGRefObject_DynSelect()
        {
            // Eine Abfragehandler erstellen
            SOGDynamicSelectorHandler rc = new SOGDynamicSelectorHandler("DynamischTest1");
            SOGDynamicSelectorItem nitem;

            // 1. Item: Beispiel ist ein String mit Sachbearbeiter-Auswahlliste.
            nitem = new SOGDynamicSelectorItem(typeof(string), "test1", v.Format("Testfeld 1"), "=|!=");
            nitem.MaxLinesMode = 99;
            nitem.VAwl = "sachbea.awl";
            nitem.VCategory = v.Format("Kategorie 1");
            rc.AddItem(nitem);

            // 2. Item: Beispiel ist ein Decimal
            nitem = new SOGDynamicSelectorItem(typeof(decimal), "test2", v.Format("Testfeld 2"), "=|!=|<|>");
            nitem.VCategory = v.Format("Kategorie 2");
            rc.AddItem(nitem);

            // Funktion festlegen, die den Zugriff auf die Daten durchführt
            rc.OnGetList += new SOGGetRefObjectListEventCallback(rc_OnGetList);

            return rc;
        }

        void rc_OnGetList(object sender, SOGGetRefObjectListEventArgs args)
        {
            // Achtung: Diese Funktion wird in einem eigenen Thread ausgeführt (Asynchroner Zugriff)
            SOGDynamicSelectorHandler hand = (SOGDynamicSelectorHandler)sender;

            // Abfrage durchführen, und Liste von Objekten liefern
            ...
            args.AddResult(   xyz   );

        }

Konfiguration des ObjectSelector-Controls


Konfigurieren Sie den ObjectSelector auf der Maske wie gewohnt.
Geben Sie jedoch folgende Einstellungen an:

 

Basisobjekt

base

Referenzfunktion

refobj:Funktionsname
In diesem Beispiel: refobj:DynSelect

In dem Beispiel kann der Baustein "rc_OnGetList" verwendet werden, um die aktuellen Eingaben für eine Datenabfrage zu verwenden und eine Liste mit Ergebnisobjekten zu liefern, die die gefundenen Elemente repräsentieren.
Die Benutzereingaben finden Sie in "hand.Items[n].InputValues[n]", den ausgewählten OpCode in "hand.Items[n].InputOpCode". Bei der Angabe der möglichen OpCodes sollten Sie sich soweit möglich an die in der Konfiguration "${PROJ}\config.basis\sogsqlselector_cfg.xml" konfigurerten OpCodes halten.