Entwickler-Ecke

WinForms - Xml in Datagrid einlesen


Chiyoko - Mi 28.04.10 20:28
Titel: Xml in Datagrid einlesen
Huhu,

ich habe wiedermal eine kleine Frage.

Ich moechte aus einer Xml datei lesen und die Daten in ein Datagrid einlesen.

Das Datagrid erstell ich manuel.
nun hab ich zwar einiges ueber google gefunden, das hat aber immer mit Dataset und SQL zu tun.
Geht es denn nicht einfach ohne?

Bzw i-wie ist mir das Prinzip unklar.

Bitte um Ratschlaege.Danke.


Chiyoko - Mi 28.04.10 23:44

Wie fast immer, ich hab mir die Frage selbst beantworten koennen...

Kleiner aber feiner Fehler:

Ich hatte nur vergessen, "datagrid" statt "Datagridview" zu nehmen, sonst haett es schon lange funktioniert^^

-> Xl in Datagrid einlesen

C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
using System;
using System.Collections.Generic;
using System.Xml.XPath;
using System.Xml;
using System.Xml.Linq;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;    
using System.Text;  
using System.Windows.Forms;
using System.Data.SqlClient;

private DataGrid exp_datagrid = new DataGrid(); // ->DataGrid statt datagridview

private void Erzeuge_datagrid()
{
     exp_datagrid.DataMember = "";
     exp_datagrid.Location = new Point(0,0);
     exp_datagrid.Size = new Size(741417);
     p_Guide.Controls.Add(this.exp_datagrid);
}

private void Form1_Load(object sender, EventArgs e)
{
    Erzeuge_datagrid();
}

private void treeView3_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
    string exp_xml_pfad = "C:/deine_xmldatei.xml";
    switch (e.Node.SelectedImageIndex)
    {
        case 113:
            DataSet ds = new System.Data.DataSet();
            ds.ReadXml(exp_xml_pfad, XmlReadMode.InferSchema);
            exp_datagrid.SetDataBinding(ds, "exp_isro");
            break;
    }

}


Kha - Do 29.04.10 00:24

Aber warum willst du das DGV unbedingt manuell erstellen?


Chiyoko - Do 29.04.10 11:27

Naja, weil das fuer mein Programm die beste Loesung ist, ohne komplikationen
oder Panelwechsel und das damit verbundene geflacker.(Auch mit double buffer panel klasse)

Aber wenn ich schon schreibe, haett ich doch noch eine Frage:

Gestern haben sich die Daten noch so eingelesen, das ich es nach "tags" waehlen konnte.
Jetzt sehe ich aber ein "+"-Zeichen am Datagrid, wo ich dann die einzelnen
Tags auswaehlen kann.(zur Laufzeit).Kann man das abaendern?


Chiyoko - Do 29.04.10 13:57

Ich lass das mit Xml und nehme eine Datenbank, zu der mir geraten wurde.
Aber da muss ich mich erst einarbeiten.Ich lass den Thread mal trotzdem offen.


Christoph1972 - Do 29.04.10 14:29

Hi,


das ein DataTable eine Read/WriteXML Methode anbietet ist bekannt?


Chiyoko - Do 29.04.10 16:48

EDIT: ja, sry falsch gelesen.Du meintest ja datatable..ja ist bekannt aber wie gesagt, ich arbeite mich gerade ein.


Chiyoko - So 02.05.10 21:51

Also ich habe jetzt einfach eine Datenbank mit Access erstellt.

Dann habe ich eine neue Datenquelle erstellt um die DB in das projekt zu intregieren.

Datenquellen->Datenquelle ansehen
->auf das Bild neben der DB klicken und per drag and drop in die Form ziehen, so
erstellt sich das datagrid.

Um das ganze zur Laufzeit sichtbar zu machen, bzw auszublenden, reicht es, wenn man das datagrid dem jeweiligen steuerelement mit add hinzufuegt.