Announcement

Collapse
No announcement yet.

Mehrere Spalten in ComboBox?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mehrere Spalten in ComboBox?

    Hallo zusammen,
    Ich habe eine comboBox in der ich in eine Zeile die Daten aus zwei oder mehreren Spalten meiner Tabelle, im DataSet, anzeigen lassen will.

    Bisher kann ich mir nur eine Spalte anzeigen lassen. Das habe ich so realisiert:
    Code:
    comboBox1->DataSource = dataSet1->Tables["KUNDEN"]; // Kunden ist der Name der Tabelle
    comboBox1->DisplayMember = "ID"; //ID: Name der Spalte
    comboBox1->ValueMember = "ID";
    Ich will mir aber in einer Zeile der combobox nicht nur "ID" anzeigen lassen sondern auch "NACHNAME" ! Wie mach ich das?

  • #2
    Leg in deiner Datatable eine berechnete Spalte an die die Daten aus den beiden anderen Spalten enthält und zeige diese an.
    Schau dir dazu mal die Hilfe von DataColumn.Expression an.

    Comment


    • #3
      Code:
      DataTable^ table = gcnew DataTable (); 
      table = dataSet1->Tables["KUNDEN"];
      DataColumn ^ alle = gcnew DataColumn();
      alle->ColumnName = "alle";
      alle->Expression = "ID + NACHNAME";
      dataSet1->Tables["KUNDEN"]->Columns->Add(alle);
      
      comboBox1->DataSource = dataSet1->Tables["KUNDEN"]; // KUNDEN ist der Name der Tabelle
      comboBox1->DisplayMember = "alle"; //alle ist der Name der Spalte
      comboBox1->ValueMember = "alle";
      habs so gemacht funktioniert aber nicht

      vieleicht einer nen Tipp warum ?!?

      Comment


      • #4
        Gerade nochmal ausprobiert. Funzt.

        Code:
        DataTable ^dt = gcnew DataTable();
        dt->Columns->Add("ID");
        dt->Columns->Add("NACHNAME");
        dt->Rows->Add(gcnew array<Object^> { "1", "Müller" });
        dt->Rows->Add(gcnew array<Object^> { "2", "Berger" });
        dt->Rows->Add(gcnew array<Object^> { "3", "Meier" });
        
        DataColumn ^ alle = gcnew DataColumn();
        alle->ColumnName = "alle";
        alle->Expression = "ID + ' ' + NACHNAME";
        dt->Columns->Add(alle);
        
        comboBox1->DataSource = dt;
        comboBox1->DisplayMember = "alle";
        comboBox1->ValueMember = "ID";

        Comment


        • #5
          Code:
          	
          dt->Rows->Add(gcnew array<Object^> { "1", "Müller" });
          dt->Rows->Add(gcnew array<Object^> { "2", "Berger" });
          dt->Rows->Add(gcnew array<Object^> { "3", "Meier" });
          Ansich geht das so ganz gut, aber ich will die Member nicht per Hand eingeben, so wie in dem Code, sondern mir aus meinem DataSet hollen. Wie mach ich das ??

          Es heißt "dataSet1",
          die Tabelle im dataSet heißt "KUNDEN"
          und die Colums in der Tabelle "KUNDEN" heißen "ID" und "NACHNAME"

          Comment


          • #6
            Wie mach ich das ??
            Eigentlich müßte das so passen wie du das in deinem Beispielcode gemacht hast.
            Ich hatte nur aus Testzwecken die Daten von Hand in eine Datatable reingefummelt.

            Versuch mal erst die Datacolumn der Datatable hinzuzufügen und dann die Expression zu setzen. Dann sollte es knallen wenn es ein Problem mit dem Ausdruck gibt.

            Ansonsten würde ich noch zwei Dinge an deinem Code ändern.
            1. gcnew DataTable() in der 1.ten Zeile brauchst du nicht da du direkt danach eine andere Instanz zuweist.
            2. ValueMember würde ich auf "ID" belassen da ja (wie der Name vermuten läßt) das dein identifizierendes Merkmal ist.
            Die zwei Änderungen sollten aber das Verhalten nicht ändern.

            Comment


            • #7
              Hallo Marco,

              sag mal, willst Du uns mit unsinnigen bis überflüssigen Nachfragen immer wieder ärgern?

              Ralf wollte seinen Vorschlag schnell testen und hat deshalb einfach Testdaten erstellt. Darauf kannst Du natürlich verzichten.

              Wie Du Daten einlesen kannst, weißt Du doch schon längst. In Deiner ersten Frage DataGrid Veränderungen übernehmen hast Du mit Fill angefangen. Wieso hast Du innerhalb einer Woche wieder vergessen, wie das geht? Dort hast Du auch eine ganze Reihe von einführenden Hinweisen bekommen. Du erwartest doch wohl nicht, dass ich das wiederhole.

              Den Unterschied zwischen DataSet und DataTable solltest Du inzwischen kennen. Auch verstehe ich nicht, warum Du auf Deine Feldnamen verweist. Ralf hat doch dieselben Spaltennamen verwendet.

              Jürgen

              Comment

              Working...
              X