Announcement

Collapse
No announcement yet.

Datagridview Duplikate entfernen

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

  • Datagridview Duplikate entfernen

    Hallo zusammen,

    ich bin noch ein Anfänger und brauche Hilfe. Ich habe eine WinForm Anwendung mit einem Datagridview40 das ich mit Daten aus einem anderen Datagridview39 beschreibe. Nun möchte ich die Zeilen in denen die im Datagridview40 Werte doppelt vorkommen entfernen.
    Und hier komme ich einfach nicht mehr weiter. Ich habe folgendes versucht. Google bringt mich auchnicht weiter

    int result2 = 0;

    for (int i = 1; i < dataGridView39.Rows.Count + 1; i++)
    {
    label108.Text = dataGridView39[0, result2].Value.ToString();
    label109.Text = dataGridView39[1, result2].Value.ToString();
    label110.Text = dataGridView39[2, result2].Value.ToString();


    String searchValue1 = label108.Text;// F3
    String searchValue2 = label109.Text;// F4

    foreach (DataGridViewRow row in dataGridView40.Rows)
    {
    if (row.Cells[0].Value.ToString().Equals(searchValue1) && row.Cells[1].Value.ToString().Equals(searchValue2))
    {
    }
    else
    {
    dataGridView40.Rows.Add();
    dataGridView40.Rows[result2].Cells["Auftragsnummer2"].Value = label108.Text;
    dataGridView40.Rows[result2].Cells["ErbrachteLeistung2"].Value = label109.Text;
    dataGridView40.Rows[result2].Cells["Position2"].Value = label110.Text;

    result2 = result2 + 1;
    }
    }
    }

    Hat bitte jemand eine Idee was ich falsch mache??

    Viele Grüße


  • #2
    dataGridView40 label110
    Ich glaube meine Antwort wird dir nicht gefallen.


    Wichtige Merksätze
    - Gib Dingen echte Namen die helfen verstehen nicht nur anderen auch dir wenn du mit dem Code arbeitest und eigentlich weißt wofür die Nummern stehen. Also Contextabhängige passende Namen keine Nummern.
    - UI Controls halten keine Daten sie zeigen nur Daten an. Hier scheinst du nur Daten in GridViewZellen packen zu wollen und sonst nirgends. Das macht es kompliziert, undurchsichtig und fehleranfällig.
    Das System beherrscht wunderbar Databinding um zwischen Daten und Controls zu trennen.
    Vorschlag erzeuge mindestens eine Klasse (mit sprechendem Namen, Platzhaltername "MeineLiebenRowDaten") die deinen Daten mit einem dann passenden Datentypen und nicht einfach string je Property etc. enthält. Entsprechend was jetzt eine Zeile in deinem Grid/deinen Grids ist.
    Dann erzeugst du eine (oder mehrere) "List<MeineLiebenRowDaten>" in die du deine Daten füllst. Diese Listen bindest du nun an die Grids und deine Daten werden angezeigt.
    Zum bearbeiten (wie zum Beispiel Duplikate suchen und entfernen) kannst du nun vergessen das da Grids existieren du mußt nur mit Standardsprachmitteln auf die Listen schauen und diese verändern. Die Grids werden sich dann automatisch aktualisieren und sich anpassen.


    Das du beim kopieren zwischen den Grids (was du so nicht tun solltest wie oben beschrieben) werden die Daten auch zwischendurch in Labels gepackt. Die sind irgendwie überflüssig? Weder werden die Labels vermutlich in diesem Code aktualisiert so das du das auch irgendwo zu sehen bekommst noch tun die hier irgendwas. Da ist einfach ein string den du zufällig in Label.Text packst. Man kann auch einfach strings verwenden.

    Comment

    Working...
    X