Autor Beitrag
chazon
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Mi 07.04.10 23:01 
Hallo Leute

Ich möchte den Inhalt einer Combobox in eine andere Combobox kopieren.
Ich hatte mir das wie folgt vorgestellt:

ausblenden C#-Quelltext
1:
2:
3:
object[] aAr = new object[cb_a.Items.Count];
            cb_a.Items.CopyTo(aAr, 0);
            cb_b.Items.AddRange(aAr);


Aber so erhalte ich nur Einträge : System.Data.DataRowView
cb_a ist an einen DataTable gebunden.

hat jemand eine andere Idee ?

Danke und Gruß
Chazon
traceurmicha
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 160
Erhaltene Danke: 9

Win XP SP2, Win 7 Pro., Ubuntu 9, Debian 5
C#, ASP.NET, MSSQL, PHP(Microsoft Visual Studio 2010 Ultimate, SharpDevelop 4, Microsoft SQL Server2008 Express, Eclipse for PHP)
BeitragVerfasst: Do 08.04.10 07:10 
Moin chazon,

Also mir ist zwar noch nicht bewusst warum man den inhalt der einen in eine andere Combobox kopieren will aber nun gut.

ich habs so gemacht:
ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (string element in comboBox1.Items)
            {
                comboBox2.Items.Add(element);
            }

joa, erklärt sich denke ich mal von selbst oder?

_________________
Programmieren ist ein Rennen zwischen den Softwareentwicklern, die versuchen größere und bessere idiotensichere Programme zu schreiben und dem Universum, welches versucht größere und bessere Idioten zu produzieren. Zur Zeit liegt das Universum in Führung.
chazon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 08.04.10 19:27 
Danke für die Antwort
Aber wenn ich das so schreibe dann bekomme ich die Fehlermeldung
in dem Foreach-Statement:

ausblenden Quelltext
1:
2:
Das Objekt des Typs "System.Data.DataRowView" kann nicht
 in Typ "System.String" umgewandelt werden.


Das ist bei meinem Ansatz das gleiche Problem . Denn ich erhalte als Itemm immer
"System.Data.DataRowView" als Eintrag.

Die Schwierigkeit liegt in der Datenbindung.
D.H.ich binde die Combobox A an eine Mysql-Tabelle. Nun soll eine andere
Combobox als erstes 3 Item-Einträge erhalten (zb x1,x2,x3) und anschließend
alle Einträge aus Combobox A erhalten. Also kann ich nicht einfach die Tabelle
auch an diese Combobox B binden sondern trage erst die drei Items ein und hänge
dann alle anderen Einträge aus A an.

Wenn die Combobox A nicht an eine Tabelle gebunden wird, dann funktioniern beide
o.g. Ansätze einwandfrei. aber so ???
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Do 08.04.10 19:31 
Das Problem liegt darin: Für die ComboBox-Items wird eine bestimmte Eigenschaft angezeigt. Wenn nichts anderes gesagt wird, handelt es sich um ToString; und bei einer DataRow u.ä. gibt es keine Standard-Eigenschaft, die als String geeignet ist.

Du musst dir aus der DataRowView eine bestimmte Eigenschaft auswählen oder erstellen, die zur Anzeige benutzt werden soll. Am sinnvollsten dürfte eine Spalte der Zeile in Frage kommen.

Jürgen
chazon Threadstarter
Hält's aus hier
Beiträge: 11



BeitragVerfasst: Do 08.04.10 19:55 
Alles Klar!

So gehts

ausblenden C#-Quelltext
1:
2:
3:
4:
foreach (DataRowView drw in comboBox_A.Items)
{
       comboBox_B.Items.Add(drw.Row[i].ToString());       
}

wobei i die Tabellenspalte mit den Einträgen ist.


Danke für Eure Hilfe
Gruß Chazon