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
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
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
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.
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?
Ok das mit dem Dataset ist klar, die xls wurde erstellt. Super Sache.
Nur wie bringe ich diese als Datensource ein?
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
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.,,
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
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.
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...
Ö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?
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.