tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
1844
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von WiZdooM
    WiZdooM WiZdooM ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Hessen
    Beiträge
    344
    Hallo

    Ich möchte gerne ein Datenset mit den Werten aus einer XML füllen und diese dann im Gridview ausgeben lassen.
    Ich hab mir also ein DataSet angelegt, dort eine Tabelle drin erzeugt, die 4 Spalten enthält. Das ganze dann noch mit einem Gridview verknüpft (Member: die Datentabelle, Source: das DataSet). Nun lese ich die XML mit der DataSet.ReadXml-Methode (XmlReader) aus, wie es in der MSDN steht:
    Code :
    1
    2
    3
    4
    5
    
                string file = "Data.xml";
                System.IO.FileStream fileStreamXML = new System.IO.FileStream(file, System.IO.FileMode.Open);
                System.Xml.XmlTextReader xmlReader = new System.Xml.XmlTextReader(fileStreamXML);
                XMLDataSet.ReadXml(xmlReader);
                xmlReader.Close();

    Da an der Stelle keine Exception geworfen wird, nehme ich an das steht im DataSet. Wie bekomme ich nun das Gelesene in die DataTable und damit in das Gridview ?
     
    Gruß

    Wizzy

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Was sagt dir der Debugger? Sind die Daten da oder nicht?
     

  3. #3
    Avatar von WiZdooM
    WiZdooM WiZdooM ist offline Mitglied Brokat
    Registriert seit
    Oct 2003
    Ort
    Hessen
    Beiträge
    344
    Hallo Norbert,

    offenbar ist in dem DataSet nichts drin, der Lookup sagt jedenfalls dass das DataSet Empty is

    Eine Datenbank mittels ADO an ein GridView zu Binden ist ja kein Problem, aber ich will nicht extra für eine handvoll Einträge eine Datenbank aufsetzen... Irgendwie scheint das wohl nicht zu gehen. Im Netz findet man jedenfalls eigentlich nichts zu dem Thema.

    Edit: Ich hab jetzt mal ein ListView genommen. Das Lässt sich etwas angenehmer Befüllen. Aber nur "etwas".
    In meiner XML ist er nun beim Element "COL" (Column) angekommen. Für jede Spalte existiert ein Element mit dem jeweiligen Attribut, also 4 Spalten und 4 Attribute. Mit folgendem Reader traversiere ich die XML und befülle die ListView:
    Code :
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    
    XmlTextReader reader = new XmlTextReader("Data.xml");
                try
                {
                    while (reader.Read())
                    {
                        switch (reader.NodeType)
                        {
                            case XmlNodeType.Element:
                                switch (reader.Name)
                                {
                                    case "ROWHEADER":
                                        break;
                                    case "COLHEADER":
                                        for (int i = 0; i < reader.AttributeCount; i++)
                                        {
                                            reader.MoveToAttribute(i);
                                            switch (reader.Name)
                                            {
                                                case "text":
                                                    listView1.Columns.Add(reader.Value);
                                                    break;
                                                case "width":
                                                    listView1.Columns[i-1] .Width = XmlConvert.ToInt32(reader.Value);
                                                    break;
                                            }
                                        }
     
                                        break;
                                    case "ROW":
                                        break;
                                    case "COL":
                                        reader.MoveToAttribute(0);
                                            switch (reader.Name)
                                            {
                                                case "text":
                                                    ListViewItem item = new ListViewItem(reader.Value);
                                                    item.SubItems.Add(reader.Value);
                                                    item.SubItems.Add(reader.Value);
                                                    item.SubItems.Add(reader.Value);
                                                    listView1.Items.Add(item);
                                                    break;
                                            }
                                        break;
                                }
                                break;
                        }
                    }
                }
                catch (Exception e)
                {
                    MessageBox.Show(e.Message.ToString());
                }

    Wie gesagt befinden wir uns nun an der Stelle "COL" in der XML, dort wo nun die Zelle befüllt werden soll.
    Nun laut der MSDN wird die listView mit dem Subitems und Items befüllt. Zwar füllt mir dieser Reader die Zellen, aber nur vertikal nicht horizontal - die Werte die in den Spalten stehen sollen, stehen in den Zeilen. Etwas Ähnliches passiert auch beim Setzen der Spaltenbreite, anstatt jede Spalte zu nehmen, nimmt er nur die erst Spalte und setzt das Attribut "Width" auf "200".
    Zum besseren Verständnis hier noch die XML Datei.
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?xml version="1.0" encoding="utf-8" ?>
    <ROOT>
      <ROWHEADER>
        <COLHEADER text="Programm" width="200" />
            <COLHEADER text="Version" width="35" />
            <COLHEADER text="Seriennummer" width="200" />
            <COLHEADER text="Verwendet von..." width="200" />
      </ROWHEADER>
      <ROW>
            <COL text="Windows XP" />
            <COL text="SP3" />
            <COL text="THISI-SASAM-PLESE-RIALN-UMBER" />
            <COL text="PC 123" />
        </ROW>
    </ROOT>

    Wieso macht der das ?
    Geändert von WiZdooM (27.01.09 um 01:00 Uhr)
     
    Gruß

    Wizzy

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 09.01.11, 11:32
  2. GridView mit Daten aus DB befüllen
    Von keks1984 im Forum .NET Web und Kommunikation
    Antworten: 1
    Letzter Beitrag: 10.09.07, 13:23
  3. Antworten: 0
    Letzter Beitrag: 04.11.06, 09:40
  4. Daten von GridView in ein DataSet transferieren
    Von raphk im Forum .NET Datenverwaltung
    Antworten: 1
    Letzter Beitrag: 17.11.05, 15:02
  5. Antworten: 0
    Letzter Beitrag: 06.09.05, 17:18