Simple Lösung für XML editieren mit Datagridview(s)

16/08/2008 - 23:32 von Thomas Hübner | Report spam
Hi All,

Ich habe von einem ehemaligen Mitarbeiter ein Projekt "geerbt". Es ist
ein HTML Frontent was XML Dateien als Datenlager zugreift. Leider sind
alle XML Dateien (die er vorher persönlich gepflegt hat)
unterschiedlich. Die Herausforderung für mich ist nun zuerst einen
simplen Editor für diese Dateien zu bauen. Ich werde das Projekt auf
eine Datenbank umbauen aber der laufende Betrieb muß erhalten werden.
Meine erste Idee ist, die XML in ein Dataset zu laden und die Tables auf
auf Tabcontrolpages mit füllenden Datagridviews zu laden. Das
funktioniert soweit auch ganz gut mit folgendem Code:

Private Sub ÖffnenToolStripMenuItem_Click( _
ByVal sender As System.Object, _
ByVal e As System.EventArgs) _
Handles ÖffnenToolStripMenuItem.Click

With OpenFileDialog
.ShowDialog()
If Not .FileName.Length = 0 Then
ds.Clear()
TabControl.TabPages.Clear()
ds.ReadXml(.FileName)
End If
End With
Dim i As Integer = 0
For Each dt As DataTable In ds.Tables
tabs = New TabPage(dt.TableName)
dgvs = New DataGridView
dgvs.DataSource = ds.Tables(i)
dgvs.Dock = DockStyle.Fill
dgvs.AllowUserToOrderColumns = False
dgvs.SelectionMode = DataGridViewSelectionMode.FullRowSelect
tabs.Controls.Add(dgvs)
TabControl.TabPages.Add(tabs)
i += 1
Next
End Sub

Nun das Problem:
Ich muß irgendwie die Datagridviews bzw. die dahinterliegenden Tables
synchronisieren und zwar in zwei Punkten:

1. Wenn in irgendeinem DGV eine Zeile zugefügt wird muß dies in allen
Anderen auch passieren sonst kann ich die XML aus dem Dataset nicht
wieder speichern.

2. Wenn in irgendeinem DGV eine Row selektiert wird muß dieselbe Row
auch in allen anderen DGV's selektiert werden da man sonst keinen
Anhaltspunkt hat wenn man eine Zeile über mehrere Tabpages editieren muß.

Gibt es da Möglichkeiten? Die DGV's als controlarray zu bauen habe ich
irgendwie nicht geschafft - weis aber auch nicht ob das die Lösung wàre.

Gruß,
Thomas
 

Lesen sie die antworten

#1 Thomas Hübner
16/08/2008 - 23:47 | Warnen spam
Nachtrag:

ein nice2have wàre auch ein Rowheader für _alle_ DGV's gleich mit dem
Inhalt der ersten Spalte der ersten Table im Dataset. Das wàre für die
Mitarbeiter ein zusàtzlicher identifer neben dem syncronisieren der
selektierten Row da es keine ID's gibt. Leider habe ich keine
brauchbaren Beispiele für sowas ergooglen können :-(

Gruß,
Thomas

Ähnliche fragen