Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datarow Werte zur Laufzeit ändern
Ivy - Mo 31.05.10 13:32
Titel: Datarow Werte zur Laufzeit ändern
Hallo zusammen,
ich habe ein Dataset angelegt:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| fDataTable.Columns.Add("ID", typeof(int)); fDataTable.Columns.Add("Name", typeof(string)); fDataTable.Columns.Add("Alter", typeof(int));
fDataTable.Rows.Add(1, "Karlheinz Reiher", "30"); fDataTable.Rows.Add(2, "Brunhilde Förster", "24"); fDataTable.Rows.Add(3, "Edelbert Jakobs", "65"); |
Nun möchte ich dass man z.b das Alter zur Laufzeit ändern kann (also +1 oder -1 Jahr).
Wie kann ich das realisieren?
Vielleicht hat jemand ne idee...
grüße ivy
danielf - Mo 31.05.10 13:51
Hallo,
du kannst mit datatable.Rows[rowIndex].ItemArray[cellIndex] auf die jeweilige Zeile/Spalte zugreifen.
Wenn du über den Spaltename zugreifen willst kannst du dies über datatable.Columns["blub"].Ordinal realisieren. An dieser Stelle bietet sich wohl auch eine Extensions an.
Aber generell würde ich nicht das Alter speichern, sondern das Geburtsdatum und für das Alter ein Property implementieren.
Gruß
Ivy - Mo 31.05.10 14:01
Hm ok danke für die antwort. Mit dem alter ist halt jetzt erstmal nur nen beispiel, kann das später ja immernoch beliebig ändern, sodass es ein wenig sinnvoller ist.
Muss ich i-was für rowIndex und cellIndex einsetzen?? immoment funktioniet noch gar nix xD
danielf - Mo 31.05.10 14:02
Klar musst du dafür was einsetzen :o
Den Zeilen (rowIndex) und Spalten (cellIndex).
Irgendwie muss das Programm ja wissen was es tut :o
Ivy - Mo 31.05.10 14:08
ja logisch deswegen frag ich ja.
und woher bekomm ich den zeilen und spaltenindex? bzw was is das für ein index?
JüTho - Mo 31.05.10 15:12
Ivy hat folgendes geschrieben : |
bzw was is das für ein index? |
Häh? Das sind doch zwei verschiedene Indizes. Also kann das nicht mit einer Antwort geklärt werden.
Ivy hat folgendes geschrieben : |
und woher bekomm ich den zeilen und spaltenindex? |
Du musst doch entscheiden oder klären, welcher Wert zu ändern ist. Mögliche Verfahren:
1. Suche die Zeile, die zu ID=3 gehört.
C#-Quelltext
1:
| DataRow row = fDataTable.Rows.Find(3); |
2. Ändere in dieser Zeile den Wert in der Spalte "Alter":
C#-Quelltext
1: 2:
| if (row != null) row["Alter"] = 18; |
Es gibt noch viele andere Situationen und Verfahren; das sind nur Beispiele.
Aber ich habe den Eindruck, du solltest nicht einfach irgendwie anfangen und irgendwas machen, sondern zielgerichtet vorgehen und dich richtig einarbeiten. Natürlich musst du auch vorher nachdenken, was du willst und wonach du fragen solltest.
Jürgen
Ivy - Mo 31.05.10 16:25
aha okay kommt aber ein fehler
"Die Tabelle hat keine Primärschlüssel."
danielf - Mo 31.05.10 16:32
Und was könnte das bedeuten?
Ich glaub ich hab eine Eingabe ... Du musst einen Primärschlüssel für die Tabelle definieren ...
Oh ich glaub ich hab nochmal eine Eingabe ... man könnte danach
googeln [
http://www.lmgtfy.com/?q=datatable+prim%C3%A4rschl%C3%BCssel+definieren&l=1].
Naja.. mal ehrlich, ein bisschen Eigeninitiative ist wohl kaum zu viel verlangt.
Schon die Frage mit dem Index konntest NUR DU beantworten. Jürgen hat dich noch sehr aufmerksam daraufhin gewiesen - wie in diesem Fall der Kompilier.
Gruß
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!