Announcement

Collapse
No announcement yet.

Inhalt eines Datasets in einer Combobox darstellen

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

  • Inhalt eines Datasets in einer Combobox darstellen

    Ich habe folgendes Problem vielleicht erbarmt sich ja jemand mir zu Helfen wäre super.
    Ich hab den Inhalt der beigefügten XML-Datei folgenderweise in einen Dataset gelesen. Nun würde ich gerne in einer Combobox die Liste aller Customer-ID's darstellen. Später soll er nach der Auswahl einer Customer-ID die dazugehörigen Werte wie Name, Street usw. in entsprechende Textfelder befüllen aber erstmal würde ich mich schon freuen wenn mir das mit der Liste der Customer-ID's in der Combobox gelingen würde. Hat da vielleicht jemand eine Idee für mich?

    Dim dlgFileOpen As New OpenFileDialog()
    dlgFileOpen.ShowDialog()
    Dim path As String = dlgFileOpen.FileName

    Dim ds As New DataSet
    Dim streamRead As New System.IO.FileStream("" & path & "", _
    System.IO.FileMode.Open)

    ds.ReadXml(streamRead)

    ComboBox1.DataSource = ds.Tables (0)
    Attached Files

  • #2
    Mit der DataSource bestimmst Du in diesem Fall wohl nicht die Elemente in der Liste, sondern die Elemente auf die die Combobox angewandt wird.
    Sprich wenn Du in der Combobox etwas auswählst wird in deinem DataSet ein Wert verändert.

    Ich habe auf die schnelle auch nichts gefunden wie man per DataBinding die Items befüllen kann.

    Bleibt Dir wohl nur die combobox selbst zu befüllen.

    Comment


    • #3
      Danke für Deine schnelle Atwort.

      Okay, denn in meinem Fall steht in der Combobox nur der Eintrag "System.Data.DataRowView".
      Ich hab zwar mehrmals gelesen das man das dataset irgendwie an die Combobox binden kann aber leider auch nirgendwo genau wie man das am Besten realisiert.

      Wie kann ich denn die Combobox am Schlausten mit den von mir gewünschten Inhalten befüllen?

      Comment


      • #4
        Hallo

        Code:
        Combobox1.DisplayMember="Customer-ID"
        cu

        Comment


        • #5
          OK Sorry... das war jetzt ein Fehler von mir. Die DataSource Eigenschaft legt die Werte fest die in der Liste angezeigt werden.

          Also hat Hauti oben recht. Du musst nur den Namen der Spalte der CustomerId in Deinem DataSet als DisplayMember angeben.

          Comment


          • #6
            Echt klasse vielen Dank Euch beiden der zusätzliche Befehl:

            Combobox1.DisplayMember="Customer-ID"

            hat mein Problem gelöst. Dann mach ich mich jetzt mal dran das nach einer Auswahl der Customer-ID entsprechende Textfelder mit den Werten aus Name, Street usw. gefüllt werden das müsste ja eigentlich auf ähnliche weise möglich sein oder hab ich da Denkfehler?

            Comment


            • #7
              Ist es eigentlich auch möglich Daten aus einem Dataset mit Hilfe vo SQL-Befehlen herauszuziehen? So in der Art

              Select Customer-ID
              from ds.Tables (0)

              Comment


              • #8
                Nein, mit SELECT-Befehlen wie SQL geht es nicht. Aber es gibt vergleichbare Verfahren, z.B. durch DataTable.Select oder DataView. Die Details, wie Daten gefiltert werden können, stehen unter DataColumn.Expression.

                Auch Linq bietet Möglichkeiten, aber dazu habe ich noch keine Ahnung.

                Gruß Jürgen

                Comment


                • #9
                  Hier gibt's Linq to DataSet:

                  http://msdn.microsoft.com/de-de/library/bb386977.aspx

                  Damit kannst Du SQL ähnliche Abfragen über ein DataSet ausführen. Natürlich läuft das Query dann lokal auf dem Rechner auf dem das Programm ausgeführt wird und nicht mehr in der Datenbank.
                  Sollte man bei großen Datenmengen evtl. bedenken.

                  Hier noch ein kleines Beispiel aus obiger Internetseite für alle die das interessiert:

                  [highlight=c#]
                  // Fill the DataSet.
                  DataSet ds = new DataSet();
                  ds.Locale = CultureInfo.InvariantCulture;
                  FillDataSet(ds);

                  DataTable products = ds.Tables["Product"];

                  IEnumerable<DataRow> query =
                  from product in products.AsEnumerable()
                  select product;

                  Console.WriteLine("Product Names:");
                  foreach (DataRow p in query)
                  {
                  Console.WriteLine(p.Field<string>("Name"));
                  }
                  [/highlight]

                  Natürlich kann man auch Where Bedingung u.ä. einbauen. So z.B.

                  [highlight=c#]
                  from product in products.AsEnumerable()
                  where product.Field<string>("Name") == "Zuckerdose"
                  select product;
                  [/highlight]

                  Findet alle produkte die Zuckerdose heissen

                  Comment


                  • #10
                    Das Befüllen der Textfelder abhängig von der Auswahl in meiner Combobox klappt nun super bis auf ein Feld und zwar das mit dem Country Tag.

                    XML-Datei
                    <Location>Erlangen</Location>
                    VB.Net Code
                    TextBox11.DataBindings.Add("Text", ds.Tables(0), "Location") --> ist okay

                    XML-Datei
                    <Country ID="DE">Deutschland</Country>
                    VB.Net Code
                    TextBox12.DataBindings.Add("Text", ds.Tables(0), "Country") --> bringt einen Fehler

                    Das ist bestimmt nur wieder ein kleiner Kunstgriff aber ich komm irgendwie nicht drauf ich möchte einfach nur den Wert (in diesem Fall Deutschland) haben unabhägig ob da "DE" oder "US" oder sonst was steht.

                    Comment

                    Working...
                    X