Laden...

Datensatz aus XML Datei in textbox darstellen: vor-> zurück->

Erstellt von schuppsl vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.548 Views
S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren
Datensatz aus XML Datei in textbox darstellen: vor-> zurück->

Hallole.

Mal ganz einfach angenommen ich habe eine Windows Form mit einer Textbox(textBox1).
In diese will ich aus einer XML Datei Daten auslesen und in die Textbox schreiben.
Dabei soll ich in der Form mit einem vor-zurück Button die einzelnen Datensätze anzeigen können.

Also die XML könnte so aussehen:


<EINTRAG>
<beginn>
<inhalt>Text Nummer 1</inhalt>
</beginn>
<beginn>
<inhalt>Text Nummer 2</inhalt>
</beginn>
<beginn>
<inhalt>Text Nummer 3</inhalt>
</beginn>
<beginn>
<inhalt>Text Nummer 4</inhalt>
</beginn>
</EINTRAG

Das auslesen der XML Datei ist kein Problem.
Auch das schreibn in die Textbox ist kein Thema.

Nur wie mache ich das mit der Anzeige?
Wie programmiere ich die vor-zurück Buttons so, daß die immer einen Datensatz anzeigen?
Also bei start "Nummer 1", dann auf den vor Button "Nummer 2" usw..
und auf den zurück button wieder zurück...
Alternativ oder zusätzlich ist die Auswahl mit einer Combobox möglich.

Es geht nicht ums schreiben /Speichen der XML Datei, sonder darum wie ich die Daten speichere, daß ich sie nacheinander aufrufen kann.
In einem Enum, Struct?
Und dann ne Referenz drauf die ich in/decrementiere?

Danke und Grüße

D
500 Beiträge seit 2007
vor 16 Jahren

Hallo!

Enum macht keinen Sinn. Du kannst entweder als Representation Deiner Daten direkt die Knoten nehmen, würde ich aber nicht empfehlen.
Du kannst natürlich nach dem Auslesen Deiner Datei, die Daten in eine von Dir erstellte Klasse - eine Art DataTransferObjekt - (eventuell auch strcut möglich, kommt auf die Daten an) schreiben (Erstelle Dir eine Klasse entsprechend eines Hauptknotens: hier Eintrag) und diese steckst du wiederum in eine Liste. In der Oberfläche kannst Du dann einfach über die Liste vor- und zurücklaufen.

Gruß, DaMoe

V
327 Beiträge seit 2005
vor 16 Jahren

hallo,

mach dir doch ein objekt, das eine liste von "knotenobjekten" (das sind deine Daten) hat. dann noch ein paar methoden für GibMirDatenAnStelle(int stelle), GibMirNext() und GibMirPrev()

Beim Auslesen der xml Datei baust dir dann die Lsite zusammen und dann kannst damit doch super arbeiten.

Fürs speichern hinterher, könnte man dann schön Serialisierung nutzen, denke ich.

so ungefähr würde ich das wohl machen.

MFG Veasel

5.299 Beiträge seit 2008
vor 16 Jahren

Hi!

Du kannst Xml auch mit Dataset.ReadXml ins Dataset laden.
Dann machste Dataset.WriteXmlSchema("MyDataset.xsd"), und fügst die Xsd deinem Projekt als typisiertes Dataset hinzu.

Jo, dann kannste Databinding rauf und runter machen, an DatagridViews, Combos, Textboxen, wasde willst.

Der frühe Apfel fängt den Wurm.

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Hi!

Du kannst Xml auch mit Dataset.ReadXml ins Dataset laden.
Dann machste Dataset.WriteXmlSchema("MyDataset.xsd"), und fügst die Xsd deinem Projekt als typisiertes Dataset hinzu.

Jo, dann kannste Databinding rauf und runter machen, an DatagridViews, Combos, Textboxen, wasde willst.

Klingt interessant.
Was muss ich hierzi einbinden?
Dataset.ReadXml wird nicht erkannt.

Dann noch eine andere Frage:
Ich habe nun eine Klasse geschrieben die meine zu speichernden strings enthält.
Dann im Hauptprogramm ein List erzeugt:


 List<InventarList> list = new List<InventarList>();

Möchte ich jetzt da was reinspeichern, geht das nicht:


 list.Add("blabla");

ist ja auch klar, er weiß ja nicht wohin.
Aber wie kann ich denn auf die Membervariablen zugreifen (public) innerhalb eines List Arrays?

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Ok das mit dem Dataset ist klar, die xls wurde erstellt. Super Sache.
Nur wie bringe ich diese als Datensource ein?

E
395 Beiträge seit 2007
vor 16 Jahren

list.add(new Artikel());

du darfst keine liste mit der inventarliste haben sondenr eine liste mit einzelnen artiekln

danach kanst du mit list[0-x] zugreifen oder eben

was hier aber eh in betracht kommt ist eine klasse InvantarList die wiederrum eine liste mit den artiekl enthält

also eine klassenstrucktur ala

main klase 1 ... 1 InvtarList 1...n Artiekeln

verstehste wie ich das meine?

MfG Paul

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

verstehste wie ich das meine?

Nein, nicht wirklich🙂

Also ich habe ein Klasse:


public class InventarList
{
public string name;
public string id;
public string hardware;
public string software;
...
}



So diese Klasse lege ich jetzt in einem Array an, wie oben beschrieben:


List<InventarList> list = new List<InventarList>;();

ICh nehme einfach mal an, das ist dasselbe wie in C++


InventarListe list = new [b]Inteventatliste[anzahl][/b];

Ist das nicht so?
Hier könnte ich nun bequem mit


InventarListe[x].hardware = "blabla";


Zugreifen.
Im Prinzip suche ich ein c# Aquivalent dazu.,,

E
395 Beiträge seit 2007
vor 16 Jahren

ah gut

inventarlist klang wie die komplette liste aller im inventar vorhanden objecte

alos du machst zb

List<InventarList> list = new List<InventarList>;

und dan hinzufügen mit list.add(new Inventarlist());
usw

näheres entnimst du der msdn doku

MfG Paul

5.299 Beiträge seit 2008
vor 16 Jahren

Ok das mit dem Dataset ist klar, die xls wurde erstellt. Super Sache.
Nur wie bringe ich diese als Datensource ein?

Quickndirty: Aus dem Datenfenster eine Tabelle des Datasets aufs Form ziehen.

Datenfenster: Menu "Daten" - "Datenquellen anzeigen"

Der frühe Apfel fängt den Wurm.

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Ok das mit dem Dataset ist klar, die xls wurde erstellt. Super Sache.
Nur wie bringe ich diese als Datensource ein?
Quickndirty: Aus dem Datenfenster eine Tabelle des Datasets aufs Form ziehen.

Datenfenster: Menu "Daten" - "Datenquellen anzeigen"

Hm..ja ok.
Also ich kann die Daten bereits ins Dataset einlesen und auch schreiben.

Aber..naja ich werds schon herausfinden.
Das war auf jeden Fall ein guter Tip.

Aber: Wenn ich nun "neue Datenquelle hinzufügen " möchte, kann ich ja die xsd Datei nicht auswählen als Datenquelle auswählen geschweige denn irgendwo auf die Form ziehen...vielleicht hierzu noch ein kleiner Tip, dann schaff ich das schon...

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Habs schon, danke...

S
schuppsl Themenstarter:in
789 Beiträge seit 2007
vor 16 Jahren

Öhm..darf ich nochmal?
Ich ziehe also eine Tabelle in die Form.
dann wird eine Bindingsource und einen Navigator erzeugt.
Die Tabelle wird wie gewünscht als Textfeld dargestellt.
Nur wie krieg ich jetzt da die daten rein?
Es sind je bereits 2 Datensätze vorhannden?

5.299 Beiträge seit 2008
vor 16 Jahren

Nur wie krieg ich jetzt da die daten rein?
Es sind je bereits 2 Datensätze vorhannden?

Beim Databinding hat man Daten und Ansichten fein getrennt. Codeseitig tut man keine Daten ins Grid (oder andere Controls), sondern in die zugrundeliegende DataTable.

Angenommen, das typisierte BestellungDataset "Bestellung" enthalte die ArticleDataTable "Article" mit den Spalten String "ArticleName" und Decimal "Price"

Dann kann man die typisierten Member nutzen:

this.BestellungDataset.Article.AddArticleRow("Bier", 0.49);

Beachte auch den Rückgabewert von .AddArticleRow(), nämlich die neu zugefügte ArticleRow

BestellungDataset, ArticleDataTable , ArticleRow sind vom DB-Assistenten oder Dataset-Designer generierte Klassen, so benamt aufgrund der im Dataset vorgefundenen Tabellen und SpaltenNamen.

Der frühe Apfel fängt den Wurm.