Laden...

Datensatz in CodeBehind aus DataGrid auslesen und bearbeiten

Erstellt von oehrle vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.392 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Datensatz in CodeBehind aus DataGrid auslesen und bearbeiten

Hallo, beschäftige mich gerade mit dem DataGrid. Ich habe ein DataGrid per codebehind mit Spalten gefüllt, die ich aus einer Liste habe. Dann habe ich leere Datensätez einegefügt. Nun muss ich noch in die eingefügten Datensätze in Spalte 0 einen bestimmten String einfügen. Ich komme aber irgndwie nicht an den Datensatz und die Spalte ran. Normal müßte man doch mit DataGrid.Items[x] auf den betreffenden Datensatz zugreifen können. Dann muss ich an die Spalte ran. Kann mir da jemand mal ein Tipp geben? In den meisten Beispilen ist das alles immer nur in XAML beispielisiert, nicht per Code. Wie geh ich da vor?

3.430 Beiträge seit 2007
vor 12 Jahren

Hallo,

ich würde dir da empfehlen das DataBinding zu verwenden.
Denn mit dem DataBinding kannst du dir ganz viel Arbeit sparen.
Zudem brauchst du auch nicht das DataGrid mühsam im Code zusammenzubauen.
Das kannst du alles im Xaml - Code machen.

Dann kannst du einfach in der Datenquelle (einer Liste oder was auch immer) das Property ändern und es wird automatisch im DataGrid geupdated

Gruß
Michael

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Datensatz in CodeBehind aus DataGrid auslesen und bearbeiten

Ja, danke erst mal. Ich werde das mal heute abend noch testen. Hast baer nich doch noch einen Tipp, wie ich das Zeug dynamisch reinschreiben kann? Ich meine ich könnte eine Collection erzeugen. Aber da müssen die Headerspalten einer anderen Tabelle rein. Evl. hast eine Idee, sonst probeir ich nochmal.

F
10.010 Beiträge seit 2004
vor 12 Jahren

Vergiss das gefrickel und mach es wie es vorgesehen ist.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren

Ok, dann mal zu meinem Problem. Ich habe eine View von einem SQL-Server vorliegen. In dieser View sind ca. 60.000 Datensätze mit ca. 50 Spalten. Diese Spalten haben Kürzell (Abkürzungen). Diese Kürzell sind nicht Aussagekräftig und denen (also dem Header der Spalte) muss ein Aussagekräftiger Name verpasst werden. Beim Start werden alle Datensätze in ein DataGrid geladen.
Unter dem DataGrid soll ein zweites,identisches DataGrid entstehen, mit 4 Zeilen.
Die erste Spalte von jedem dieser 4 Datensätze muss ein Suchoperator rein (>,<,==, LIKE). Dann kann der User in jede Spalte einen Wert eingeben. Dann drückt er einen Button und ich werte das unter DataGrid aus und setze die Suchabfrage ab. Die gefundenen Daten werden wieder im oberen DataGrid angezeigt.
Mein DataGrid mit den Daten und den neuen Headenamen habe ich schon per XAML erzeugt, das funktioniert. Wie bekomme ich jetzt das zweite nach eurer Idee hin, ohne das Datensätze mit Daten eingestellt weren und die Suchoperatoren drin sind?

F
10.010 Beiträge seit 2004
vor 12 Jahren

Indem du aufhörst in dieser VB6 Denke zu verharren und endlich anfängst Daten und UI zu trennen, das war schon unter WindowsForms die bessere Wahl und in WPF erst recht.

Lese die Daten in eine Liste ein, z.b. eine DataTable.
Die DataTable hat schon die Möglichkeit z.b. per DataView verschiedene Ansichten der selben Daten zu haben.
Du kannst auch einer DT selber Spalten hinzufügen, deren Headerwerte umbenennen usw.

Und das binden an ein DataGrid ist dann einfach.

Das 2. Grid bindest Du ebenfalls an eine DT, die du einfach mit 4 Zeilen und den Gleichen Spalten + der Operatorspalte versiehst.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren
Datensatz in CodeBehind aus DataGrid auslesen und bearbeiten

FZelle, danke für den Tipp. Genau das wollte ich hören, wie ich da genau ansetzen muss, das hilft mir weiter.

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren

Hallo, habe das getestet, das funktioniert. Habe eine dataTable nur mit der Struktur geklont, diese übergeben. Jetzt habe ich aber noch ein Problem. Ich möchte eine Spalte hinzufügen. das dgeht auch,aber die neue Spalte wird in der Tabelle am Ende angefügt, die soll aber an Spaltenposition 0 in der Tabelle stehen. Kriegs nciht hin, wie bekoome ich das hin?

F
10.010 Beiträge seit 2004
vor 12 Jahren
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 12 Jahren

Danke, das geht. 👍