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

user profile iconIvy hat folgendes geschrieben Zum zitierten Posting springen:
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.

user profile iconIvy hat folgendes geschrieben Zum zitierten Posting springen:
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ß