[C#] DataGridView nach Auswahl füllen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von AlphaXenon, 24. Juli 2012 .

  1. 24. Juli 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    DataGridView nach Auswahl füllen

    Ich versuche mich gerade an einem kleinen Programm, dass auf eine Access Datenbank zugreifen soll.
    Ich habe eine ComboBox, die mit Werten aus dieser Tabelle gefüllt wird
    Die DataGridView ist anfangs leer
    Spoiler
    Bild

    Nun möchte ich, dass wenn ich eines der Items auswähle, alle Datensätze der Datenbank ausgelesen werden, die diesen Namen beinhalten
    Es geht z.B. um Rohre mit versch. Wandstärken zur Auswahl 1cm, 2cm, 3cm
    Wenn ich also 2cm auswähle, möchte ich im DataGridView alle Datensätze angezeigt bekommen, die die Wandstärke 2cm im Namen haben


    Aber um mal beim Allgemeinen zu bleiben: Wenn ich Item2 auswähle, soll mir auch lediglich die Spalte der Datenbanktabelle von Item2 angezeigt werden.
    Es werden allerdings alle Spalten angezeigt und ich weiß nich mehr weiter ^^
    Code:
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
     {
     
     string item = comboBox1.Text;
     MessageBox.Show(Convert.ToString(item));
     dataGridView1.DataSource = testDBBindingSource;
     this.testDBTableAdapter.Fill(this.dataDataSet.TestDB);
     string strSQL = "SELECT * FROM TestDB WHERE 'uName' LIKE '%" + item + "%'";
     OleDbCommand cmd = new OleDbCommand(strSQL, dbcon);
     cmd.Connection = dbcon;
     dbcon.Open();
     OleDbDataReader dr = cmd.ExecuteReader();
    
    
     while (dr.Read())
     {
     dataGridView1.Rows.Add();
     }
    Stimmt was mit dem SQL Befehl nicht? Er füllt ja immerhin die DataGridView auf, also kann es sich nur um eine Kleinigkeit handeln
     
  2. 24. Juli 2012
    Zuletzt bearbeitet: 24. Juli 2012
    AW: DataGridView nach Auswahl füllen

    Meinst du hier wirklich Spalte? Oder Zeile?
    Des Weiteren wäre es gut mal Beispieldaten bzw. die echten Daten zu haben damit wir dir mit der Query helfen können...
     
  3. 25. Juli 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: DataGridView nach Auswahl füllen

    Mein Fehler, meinte natürlich Zeile

    Die Datenbank sieht zur zeit so aus:
    Bild
    Ich lasse mir jetzt die Spalte uName als Auswahlmöglichkeiten in die ComboBox ausgeben.
    Wenn ich eins ausgewählt habe, reduziere ich den Namen auf Itemx und möchte dann die Spalte uName durchsuchen, nach Werten die ebenfalls itemx enthalten.
    Konkret heißt das hier:
    Wenn ich den ersten Wert AAA Item1 auswähle, soll er mir folgende Zeilen anzeigen:
    Bild


    Edit// Ok, habs jetzt irgendwie ans Laufen gebracht
    Ich glaube zwar etwas umständlich, aber fürs erste scheint es zu funktionieren
    Falls es einfacher gehen sollte, bin ich für Verbesserungsvorschläge dankbar

    Code:
     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
     {
    [COLOR="SeaGreen"]//getroffene Auswahl in item speichern[/COLOR]
     string item = comboBox1.Text;
    [COLOR="SeaGreen"]//DGV mit kompletter Tabelle füllen[/COLOR]
     dataGridView1.DataSource = testDBBindingSource;
    [COLOR="SeaGreen"]//SQL Befehl ausführen und Daten einlesen[/COLOR]
     string strSQL = "SELECT * FROM TestDB";
     OleDbCommand cmd = new OleDbCommand(strSQL, dbcon);
     dbcon.Open();
     OleDbDataReader dr = cmd.ExecuteReader();
    [COLOR="SeaGreen"]//Name in einzelne Worte zerlegen und letztes Wort in Variable item speichern[/COLOR]
     string[] lastword = Regex.Split(item.TrimEnd(), @"[\s]");
     item = lastword[lastword.Length - 1];
    [COLOR="SeaGreen"]//Filter auf DGV anwenden -> uName beinhaltet item[/COLOR]
     testDBBindingSource.Filter = "uName like '%" + item + "%'";
     dbcon.Close();
    
     
  4. 26. Juli 2012
    Zuletzt von einem Moderator bearbeitet: 14. April 2017
    AW: DataGridView nach Auswahl füllen

    Das Projekt hat mittlerweile richtige Formen angenommen, allerdings habe ich jetzt einen Schönheitsfehler, den ich nicht lösen kann

    Die Combobox wird mit Werten aus einer Tabelle gefüllt und soll aufsteigend sortiert sein.
    Der Befehl, den ich dafür nutze ist
    Code:
    string strSQL = "SELECT * FROM Abfrage2 ORDER BY Nennweite, Außendurchmesser, Wandstaerke";
    Das Ergebnis sieht aber leider folgendermaßen aus:
    Spoiler
    Bild

    Die Combobox-Werte werden aus 3 Werten der Datenbank zusammengesetzt
    Nennweite (NW), Außendurchmesser (Ad) und Wandstaerke (WD)
    Ich habe gehofft durch die 3-fache Sortierung beim Einlesen der Daten, würde das funktionieren, aber das tut es ja offensichtlich nicht ^^
    Jemand ne Idee?
     
  5. 27. Juli 2012
    AW: DataGridView nach Auswahl füllen

    Du könntest in deinem Programm ne Liste aus deinen zusammengesetzten Strings aufbauen und die lexikographisch sortieren. Oder halt die Spalten explizit ansprechen, mit "as" vereinigen und dann sortieren.

    Code:
    "SELECT Nennweite, Außendurchmesser, Wandstaerke AS combovalue FROM Abfrage2 ORDER BY combovalue ASC"
     
    1 Person gefällt das.
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.