Announcement

Collapse
No announcement yet.

DataSet an Combobox binden

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

  • DataSet an Combobox binden

    Hallo Entwickler,

    ich verzeifle. Wie binde ich ein Dataset an eine Combobox, damit ich zwar einen Text in der Box angezeigt bekomme, das "gewählte" dann jedoch die ID, also die erste von den beiden Spalten ist.

    Folgender Code scheitert:

    Code:
            private void BefuelleComboBoxGruppe()
            {
    
                ComboAddNewUserGruppe.Items.Clear();
    
                string SQLGROUPS =
                    "SELECT id_no, user_group " +
                    "FROM GROUPS ";
    
                SqlCommand commErmittleGruppen = new SqlCommand(SQLGROUPS, Connection.con);
                       SqlDataAdapter adapter = new SqlDataAdapter(commErmittleGruppen);
    
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                ComboAddNewUserGruppe.DataSource = ds;
                ComboAddNewUserGruppe.DisplayMember = "user_group";
                ComboAddNewUserGruppe.ValueMember = "id_no";
    
            }
    Die Suche habe ich verwendet. Finde aber leider nichts besseres, als mein o. a. Quelltext bereits hergibt.

    Danke für die Hilfe und Grüße

    _________________________________

    Nachtrag: Sorry an die Mods bzw. an die Admins, dass ich dieses Thema nicht ins Unterforum C# gepotet habe...
    Zuletzt editiert von Freelancer; 01.09.2008, 20:39.

    "A fool with a tool is still a fool."

  • #2
    Das Problem wird sein das du das Dataset bindest aber ihm nicht mitteilst welche Table im Dataset benutzt werden soll. Der Weg über ein Dataset scheint mir auch etwas weit nimm lieber gleich nur eine Datatable. Also aus

    Code:
                DataSet ds = new DataSet();
                adapter.Fill(ds);
                ComboAddNewUserGruppe.DataSource = ds;
                ComboAddNewUserGruppe.DisplayMember = "user_group";
                ComboAddNewUserGruppe.ValueMember = "id_no";
    mach

    Code:
                Datatable dt = adapter.GetData();
                ComboAddNewUserGruppe.DataSource = dt;
                ComboAddNewUserGruppe.DisplayMember = "user_group";
                ComboAddNewUserGruppe.ValueMember = "id_no";

    Comment


    • #3
      Hallo Ralf,

      seltsamerweise funktioniert deine Variante bei mir nicht ganz. Die Methode adapter.getdata(); wird angemeckert:

      "System.Data.SqlClient.SqlDataAdapter" enthält keine Definition für "GetData", und es konnte keine Erweiterungsmethode "GetData" gefunden werden, die ein erstes Argument vom Typ "System.Data.SqlClient.SqlDataAdapter" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)
      Weißt Du weiter? Fehlt mir im Kopf eine "Using"? Folgende Using-Direktiven habe ich:

      Code:
      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Data.SqlClient;
      using System.Drawing;
      using System.Text;
      using System.Windows.Forms;
      Danke nochmals und Grüße

      "A fool with a tool is still a fool."

      Comment


      • #4
        Ich dachte adapter ist ein Tableadapter ist aber ja nur ein Dataadapter hätte den Code besser lesen sollen. Sorry.

        Dann so

        Code:
                    Datatable dt = new Datatable();
                    adapter.Fill(dt);
                    ComboAddNewUserGruppe.DataSource = dt;
                    ComboAddNewUserGruppe.DisplayMember = "user_group";
                    ComboAddNewUserGruppe.ValueMember = "id_no";

        Comment


        • #5
          Originally posted by Ralf Jansen View Post
          Ich dachte adapter ist ein Tableadapter ist aber ja nur ein Dataadapter hätte den Code besser lesen sollen. Sorry.

          Dann so

          Code:
                      Datatable dt = new Datatable();
                      adapter.Fill(dt);
                      ComboAddNewUserGruppe.DataSource = dt;
                      ComboAddNewUserGruppe.DisplayMember = "user_group";
                      ComboAddNewUserGruppe.ValueMember = "id_no";
          Genial ! Jetzt funktioniert es !!! Vielen Dank! Zum Abschluss eines so schönen Thread-Erlebnisses nun noch der funktionierende Quelltext in kompletter Form:

          Code:
                  private void BefuelleComboBoxGruppe()
                  {
          
                      ComboAddNewUserGruppe.Items.Clear();
          
                      string SQLGROUPS =
                          "SELECT id_no, user_group " +
                          "FROM GROUPS ";
          
                      SqlCommand commErmittleGruppen = new SqlCommand(SQLGROUPS, Connection.con);
                      SqlDataAdapter adapter = new SqlDataAdapter(commErmittleGruppen);
          
                      DataTable dt = new DataTable();
                      adapter.Fill(dt);
                      ComboAddNewUserGruppe.DataSource = dt;
                      ComboAddNewUserGruppe.DisplayMember = "user_group";
                      ComboAddNewUserGruppe.ValueMember = "id_no";
                  }


          Was auch noch interessant sein könnte:

          ComboAddNewUserGruppe.ValueMember rufe ich später natürlich mit der SelectedValue-Eigenschaft ab. In meinem Beispiel also:

          Code:
          string Gruppe = ComboAddNewUserGruppe.SelectedValue.ToString();
          Das nur für diejenigen, die diesen Thread irgendwann einmal brauchen können...

          Grüße
          Zuletzt editiert von Freelancer; 02.09.2008, 07:48. Reason: Wie ruft man den Valuemember ab...

          "A fool with a tool is still a fool."

          Comment

          Working...
          X