DataBindung und ArrayList

Hallo,
ich habe ein ArrayList, worin Skrukturen abgelegt sind. Das ArrayList möchte ich gerne als DataBingung an einigen Steuerelementen binden. Das klappt soweit ganz gut, wenn ich reine Werte in das ArrayList ablege (z.B.: meineListe.Add(„1“)).

Nun möchte ich gerne wissen und vielleicht kann mir jemand weiterhelfen, wie ich gezielt auf ein Attribut von der Struktur (alle Attribute sind öffentlich) zugreifen kann, die sich im ArrayList befinden.

Einbinden kann ich das ArrayList ja schon und über das Überwachungsfenster für die Bindingeigenschaft sehe ich auch die Strukturen im ArrayList. Aber ich kann nicht drauf zugreifen.

Im DataBinging habe ich angegeben z.B:

((s_daten)(mydaten.meineListe)).nummer

s_daten ist die Struktur, nummer ein Attribut von der Struktur, mydaten ist ein Objekt von einer Klasse, wo sich die ArrayListe meineListe befindet.

Was mach ich falsch oder vielleicht hat jemand eine Lösung parat? Danke schon mal im voraus

Gruß Olli

Hallo Olli,

mit Strukturen arbeite ich so gut wie gar nicht, sondern mit Klassen. Also, wenn ich eine Klasse hätte, würde ich die Methode „ToString“ überschreiben. Diese wird von .net häufig als Default-Methode für Klassen benutzt.
Vielleicht nützt dieser Hinweis ja irgendwie, ich kann im Moment Dein Problem nicht so nachbauen.

Gruß
Thomas

Hi Thomas,
ich hab mich für Strukturen entschieden, weil es für mich die einfachste und beste Form ist um Daten in Variablen abzulegen und ich in dem Fall keine Methoden brauche.

Ich sag immer, brauch ich nur Daten von Variablen die auch öffentlich sein können, reicht auch eine Struktur. Aber das nur am Rande.

Das mit dem ToString() habe ich nicht so recht verstanden was mir das bringen soll. Außerdem bin ich der Meinung, hätte ich mal irgendwo gelesen, daß man die gar nicht überschreiben kann(?).

Jedenfalls denk ich mal, daß man nicht so ohne weiteres expliziet auf Variablen zugreifen kann. Ich hab zwar mittlerweile geschafft, auf eine Variable einer Struktur (oder auch Klasse) zuzugreifen, die sich innerhalb eines ArrayList befindet, aber ich krieg die Meldung, daß die Variable nicht leer sein darf. Was auch immer das heißen mag.

Ich glaub ich muß doch den Weg über dataSet gehen, obwohl ich das vermeiden wollte, da mir ein dataSet einfach zuviel Overhead an Code produziert, was sich grad bei großen Datenmengen bemerkbar macht.

Gruß Olli

Hallo Olli,

Das mit dem ToString() habe ich nicht so recht verstanden was
mir das bringen soll. Außerdem bin ich der Meinung, hätte ich
mal irgendwo gelesen, daß man die gar nicht überschreiben
kann(?).

ToString ist überschreibbar.
Was ich sagen wollte: z.B. man nehme eine ComboBox und befülle sie mit Objekten einer selbstdefinierten Klasse, in der die Methode ToString überschrieben ist und diese einen Wert liefert, der dann in der ComboBox angezeigt werden soll. Obwohl die Items der ComboBox jeweils das komplette Objekt umfassen, wird gezielt eine ganz bestimmte Eigenschaft des Objekts auf der Oberfläche angezeigt, da das Control ComboBox offensichtlich die Methode ToString aufruft, um den Wert zu erhalten, den es anzeigen soll.
Ich denke, dass das möglicherweise mit dem DataBinding auch so funktionieren könnte.

Schöne Grüße
Thomas

Hallo Thomas,
ich hab es geschafft. Recht hattest du, man darf oder sollte es nicht mit Strukturen sondern lieber mit Klassen machen.

Um auf die Variablen innerhalb der Klassen zugreifen zu können, um diese an einem Steuerelement zu binden, so müssen diese als „Eigenschaft“ der Klasse abrufbar sein. Also z.B.:

public string text
{
 get {return strtext;}
}

public string wert
{
 get {return m\_wert.ToString();}
}

Wenn interesse kann ich mal den ganzen Code geben.

Gruß Olli