Formularelement ComboBox mit Daten aus Variable füttern

Hallo zusammen,

habe intensiv in der Dokumentation,in den mitgelieferten Beispielen und Foren nach Infos gesucht, wie ich aus einer .NET Anwendung eine Aufzählung in eine ComboBox im Designer (Formularelement Typ ComboBox) bekomme - nichts gefunden. Ich kann im Designer Einträge manuell hinzufügen (im Layout), die dann inder Vorschau auch sauber als Dropdown Liste erscheinen, aber ich finde keinen Weg, diese Liste von aussen (.NET Application) in die ComboBox zu bekommen. Ich sehe meine angelegten Variablen - aber ich kann deren Inhalt der ComboBox nicht zuweisen.

Übersehe ich etwas?

Bin dankbar für jeden Tip!

Die Auswahlmöglichkeiten eines Formularelements können Sie tatsächlich nicht per Formel bestimmen. Zwei Ideen:

  • Sie könnten statt eines Formularelements vielleicht auch einen Berichtsparameter verwenden. Dort ist die Verknüpfung zur Datenbank möglich.
  • Sie könnten den Inhalt des Dropdowns per DOM modifizieren und so dynamisch die gewünschten Inhalte hinzufügen. Die Werte können Sie der Choices Eigenschaft (ObjectInputCombobox) Tabulator-getrennt hinzufügen.

Wäre einer dieser beiden Wege für Sie gangbar?

Vielen Dank Herr Bartlau,

kann ich einen Berichtsparameter als DropDown Element anzeigen lassen?

ansonsten klingt Variante 2 gut. Ich könnte also das Event ProjectLoaded verwenden und dann auf die gewünschte L&L ComboBox zugreifen und ihr die Einträge zuweisen? Finde allerdings über den ListLabel Namespace keine Möglichkeit auf die Objekte des Reports zuzugreifen - DesignerObjects ist leer, DesignerWorkspace hilft mir auch nicht. Oder liegt es an meiner Trial-Version?

Ja, das geht, der Parameter ist dann allerdings in einer Pane oberhalb der Vorschau sichtbar. Sie können mit der Beispielanwendung einmal den Bericht “Diagramme mit Berichtsparametern” in die Vorschau drucken, dann sehen Sie das UI dazu.

Finde allerdings über den ListLabel Namespace keine Möglichkeit auf die Objekte des Reports zuzugreifen

Das geht über die Objects-Eigenschaft des Projekts. Hier finden Sie eine kurze Erklärung :slight_smile: : Objektmodell (DOM). Sie können auch einmal einen Blick auf die DOM-Beispiele in der Installation werfen (z.B. im Ordner “Beispiele\Microsoft .NET.NET Framework 4\WinForms\C#\Simple DOM Sample” der Installation, das klappt natürlich genau so auch ohne WinForms).

1 Like

Den Berichtsparameter bringe ich allerdings nicht in den Report - dort bräuchte ich die ComboBox aber.

Das mit der Objects Liste klappt nun, zur Info der Code (vlt. hilft es ja anderen):

private void ListLabel1_ProjectLoaded(object sender, EventArgs e)
{
    //
    combit.Reporting.ListLabel ll = sender as combit.Reporting.ListLabel;
    combit.Reporting.Dom.ProjectList pl = new combit.Reporting.Dom.ProjectList(ll);
    pl.GetFromParent();
    combit.Reporting.Dom.ObjectInputCombobox cmb = null;
    foreach (var item in pl.Objects)
    {
        if (item is combit.Reporting.Dom.ObjectInputCombobox)
        {
            if (item.Name == "cmbSelection")
            {
                cmb = item as combit.Reporting.Dom.ObjectInputCombobox;
                cmb.Choices = "Eins" + '\t' + "Zwei" + '\t' + "Drei";
            }
        }
    }
}

Vielen Dank!

1 Like