Gewusst wie: anzeigen von XML-Daten mittels Datagridview in C#
Ich habe Probleme bei der Anzeige des XML auf meinem c# - WinForm.
Meine XML-Datei sieht wie folgt aus:
<HotelDatabase>
<Hotel Name="ABC" Location="XYZ">
<Room Type="Single" Count="5" Price="2000" />
<Room Type="Superior" Count="3" Price="4000" />
</Hotel>
<Hotel Name="DEF" Location="LMN">
<Room Type="Single" Count="5" Price="2000" />
<Room Type="Superior" Count="3" Price="4000" />
</Hotel>
</HotelDatabase>
Mein Code für die Anzeige der Daten im DataGridView sieht wie folgt aus:
var dataSet = new DataSet();
dataSet.ReadXml(Properties.Settings.Default.HotelDB);
dataGridViewHotelList.DataSource = dataSet.Tables[0];
Wenn ich diesen code ausführen, nur Name und Ort angezeigt. Ich möchte, dass alle Attribute in der Hotel-element und seine untergeordneten Elemente angezeigt werden, in einem datagridview.
- Das Hotel hat nur diese 2 Attribute, meinst du die Kinder?
- Ja, ich meine alle Attribute in der hotel-Elemente und sowie deren untergeordnete Attribute
Du musst angemeldet sein, um einen Kommentar abzugeben.
Laden Sie die XML-Daten an grid-richtig, aber Sie sollten wissen, Wann Sie binden
DataGridView
zu einemDataTable
es zeigt Spalten der Daten-Tabelle keine Spalten der verbundenen Tabellen.Sie kann nicht zeigen, eine Beziehung in einer einzigen
DataGridView
. Um zu zeigen, untergeordnete Elemente von einem hotel, Sie können ein anderesDataGridView
in der gleichen form zu zeigen, untergeordnete Elemente von hotel-und binden Sie das zweite raster, um Zimmer in einem hotel:Diese Weise haben Sie eine master-detail-Beziehung zwischen Ihrem Daten-grids. Durch klicken auf jedes hotel Zeile, sehen Sie Ihr Zimmer.
Haben Sie auch einige andere Optionen, zum Beispiel:
DataGridViewButtonColumn
auf das Gitter, öffnet sich ein Formular, das zeigt ein raster mit Zimmer von ausgewählten Hotels.DataGrid
Kontrolle, die können einen link auf Kind-Elemente in einer Zeile. So zu tun, es ist genug, um hotels als Daten-Quelle Daten-grid-Steuerelement:this.dataGrid1.DataSource = ds.Tables["Hotel"];
dataGridView2.DataMember = "Hotel_Room";
Können Sie konvertieren Sie die XML-Daten in eine datatable und die nur stecken Sie es in Ihrem gridview mit DataTable.ReadXML(), hier ist der Beispiel-code aus MSDN:
Und wenn Sie benötigen, um know-how zu binden, Ihre datagridview an eine datatable, hier, ist ein link, wie das zu tun.