Laden...

Problem mit DataSet - was ist die einfachste Lösung?

Letzter Beitrag vor 18 Jahren 6 Posts 1.679 Views
Problem mit DataSet - was ist die einfachste Lösung?

In meiner Application hole ich mir ein DataSet mit zwei Tabellen, bearbeite diese lokal bevor es am Ende wieder zurückgeschrieben wird.

Der folgende Fall bereit mir jedoch etwas Kopfzerbrechen:

  1. Ich lösche eine DataRow (RowState Deleted)
  2. Alle übrigen DataRows werden in einer listBox dargestellt
  3. Der Index der Listbox stimmt also nicht mehr mit dem Index der DataTable überein

Was ist nur einfachste Weg von der listBox mit dem tatsächlichen Datensazu zu verknüpfen und gleichzeitig alle gelöschten DataRows nicht mehr anzuzeigen?
Jedes mal mit einer for-loop durchzurennen? Ein kleine Tabelle mit Verknüpfung von Datensatz und Index?
Alles nicht so schön...

AcceptChanges kann ich nicht machen da ich die Infos für den DataAdapter benötige zum zurückschreiben in die die DB...

Danke schonmal!

Hallo Quest,

definiere in der Table eine id als PrimaryKey und diese id hängst du dann dem ListBox-Eintrag als Tag an. So kannst du dann über DataTable.Find(id) auf die Row zugreifen.

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

Aha ich kann an einzelne Listbox Einträge Tags anhängen? Wie sieht sowas aus?

Hmmm da war ich wohl falsch. Hatte vergessen dass ListBox object als item nimmt...

Aber du kannst das per Dictionary machen.

Bsp: Ein globales Dictionary mit strings und ints.

Dictionary<string, int> myDic = new Dictionary<string, int>();
            myDic.Add("Nummero 1", 1);
            myDic.Add("Nummero 2", 2);
            ListBox lb = new ListBox();
            foreach (string str in myDic.Keys) {
                lb.Items.Add(str);
            }

            int outId = 231;
            myDic.TryGetValue((string)lb.Items[0], out outId);
            MessageBox.Show(string.Format("Der Eintrag {0} hat die id {1}", lb.Items[0], outId));

Es ist toll jemand zu sein, der nichts von der persönlichen Meinung Anderer hält. - frisch-live.de

Ja ok, das mit dem Dictionary geht in die Richtung die ich ale letztes angehen wollte...

Problem dabei ist dass neue Datensätze noch keine ID haben sondern diese erst später von der Datenbank bekommen, aber da der Name auch Unique ist kann ich diesen ja erstmal hernehmen, eigentlich unnötig kompliziert das Ganze, aber ich zieh das mit den AutoIDs von der DB jetzt mal durch weil ichs früher oder später brauche....

Die Auto-ID von der Datenbank kannst du nach dem insert über ein eigenes Select-Statement ermitteln (je nach benutzter Datenbank).

Such mal im Forum nach @@Identity oder SCOPE_IDENTITY (MS Sql Server)...