vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Brandneu! sevEingabe v3.0 - Das Eingabecontrol der Superlative!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Re: DataGridView 
Autor: stefanbla80
Datum: 11.10.13 21:20

Hallo nochmals,

Mit dem,genannten Code kann ich nun den Inhalt meiner DataGridView speichern und wieder laden.

Angenommen ich habe auf einem TabPage weitere DataGridView - wie kann ich diese in der selben XML-Datei speichern. Der Inhalt ist natürlich dann unterschiedlich.

Grüße Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

DataGridView 
Autor: stefanbla80
Datum: 11.10.13 14:03

Hallo zusammen,

auf meinem Form befindet sich ein DatGridView.

Diese befülle bzw. speichere ich mit diesem Code.

Weiter füge ich automatisch Comboboxen per Code ein.
Meine Frage: Wie kann ich den Inhalt der ComboBoxen in der xml speichern?!

Public Class Form1
 
    Private ds As New DataSet
    Private dt As New DataTable("MeineLinks")
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        ds.WriteXml("U:\MeineLinks.xml")
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
 
        Dim column As New DataGridViewComboBoxColumn()
        With column
            .HeaderText = "Fuktion/Status"
            .Items.AddRange("Kundeninfo", "E-Mail Angebot", "Mrs.", "Dr.")
            .Width = 250
        End With
        Me.DataGridView1.Columns.Add(column)
 
        dt.Columns.Add("Customer", System.Type.GetType("System.String"))
 
 
        dt.Columns.Add("Customer", System.Type.GetType("System.String"))
        dt.Columns.Add("Customer number", System.Type.GetType("System.String"))
        dt.Columns.Add("Project", System.Type.GetType("System.String"))
        dt.Columns.Add("Inquiry", System.Type.GetType("System.String"))
        dt.Columns.Add("Quotation", System.Type.GetType("System.String"))
 
        ds.Tables.Add(dt)
 
        If My.Computer.FileSystem.FileExists("U:\MeineLinks.xml") Then
            ds.ReadXml("U:\MeineLinks.xml")
        End If
 
        Me.DataGridView1.DataSource = ds.Tables("MeineLinks")
 
    End Sub
 
End Class
Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: powerzone3000
Datum: 11.10.13 15:46

Hallo,
indem du die Spalte in deine Datenquelle (DataTable) aufnimmst, und die ComboBoxColumn daran bindest.

Eine mögliche Lösung könnte so aussehen:
Public Class Form1
 
    Private ds As New DataSet
    Private dt As New DataTable("MeineLinks")
 
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As  _
      System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        ds.WriteXml("U:\MeineLinks.xml")
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As  _
      System.EventArgs) Handles MyBase.Load
 
        Dim column As New DataGridViewComboBoxColumn()
        With column
            .HeaderText = "Fuktion/Status"
            .Width = 250
            .Items.AddRange("Kundeninfo", "E-Mail Angebot", "Mrs.", "Dr.")
            .DataPropertyName = "Status"
        End With
        Me.DataGridView1.Columns.Add(column)
 
        dt.Columns.Add("Status", System.Type.GetType("System.String"))
        dt.Columns.Add("Customer", System.Type.GetType("System.String"))
        dt.Columns.Add("Customer number", System.Type.GetType("System.String"))
        dt.Columns.Add("Project", System.Type.GetType("System.String"))
        dt.Columns.Add("Inquiry", System.Type.GetType("System.String"))
        dt.Columns.Add("Quotation", System.Type.GetType("System.String"))
 
        ds.Tables.Add(dt)
 
        If My.Computer.FileSystem.FileExists("U:\MeineLinks.xml") Then
            ds.ReadXml("U:\MeineLinks.xml")
        End If
 
        Me.DataGridView1.DataSource = ds.Tables("MeineLinks")
 
    End Sub
 
End Class
Die sauberere Lösung wäre wohl, eine DataTable mit den Werten für die ComboBox aufzubauen und die Spalte daran zu binden.

Gruß
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: Manfred X
Datum: 11.10.13 15:58


ds.WriteXml("U:\MeineLinks.xml", XmlWriteMode.WriteSchema)
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: stefanbla80
Datum: 11.10.13 16:12

Hallo zusammen,

vielen Danke für Eure Hilfe.

Komme erstmal wieder zurecht. Ich finde die Lösung super!!

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: Manfred X
Datum: 12.10.13 00:34

Füge die an die Controls gebundenen DataTables
der Tables-Auflistung EINES Dataset hinzu und
nutze die Write-/ReadXML-Methode des Dataset.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: stefanbla80
Datum: 12.10.13 13:40

Hallo Manfred,

hast Du mir hier bitte dazu ein Beispiel?
Das ist Neuland für mich.

Grüße Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: Manfred X
Datum: 12.10.13 14:10

Genau das was Du mit einer Table bereits gemacht hast,
ds.Tables.Add(dt)
wiederholst Du für die Tables, die an die anderen Controls
gebunden sind - auf unterschiedliche TableNames achten!
ds.Tables.Add(dt1)
ds.Tables.Add(dt2)
'.....
Danach, wie gehabt:
ds.WriteXml("U:\MeineLinks.xml", XmlWriteMode.WriteSchema)
Nach dem Lesen per readXML stehen alle diese Tables in der Tables-Auflistung
des geladenen Dataset.






Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: stefanbla80
Datum: 14.10.13 07:06

Hallo Manfred,

sorry für meine späte Rückmeldung erst jetzt ...

Habs eben versucht, funktioniert wunderbar.

Gleich nochmal eine Frage: Zeile hinzufügen

Mit dem Button möchte ich an das Ende des DataGridview eine weitere Zeile einfügen.
Deren Inhalt soll aus einer Textbox kommen.

Zum Testen habe ich hier diesen Code verwendet. Jedoch bekommen ich es nicht hin die "neuen Einträge" dem DS zu übergeben. Hier habe ich noch etwas Verständnisprobleme.

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _
  System.EventArgs) Handles Button1.Click
 
        Dim RowCount As Integer = DataGridView1.RowCount - 1
 
        DataGridView1.Rows(RowCount).Cells(1).Value = "NEIN"
        Me.DataGridView1.DataSource = ds.Tables("MeineLinks")
 
    End Sub
Rein geschrieben bekommen ich es, jedoch nicht übernommen bzw. gespeichert.

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: Manfred X
Datum: 14.10.13 11:14

Hallo!

Bei Datenbindung werden neue Zeilen in der Datasource
erstellt, nicht im Control.
Einfaches Beispiel ....
Public Class frmtest
 
    Dim xmlfile As String = "U:\meinelinks.xml"
 
    'statt Designer werden Controls hier per Code erstellt
    Dim dg As New DataGridView With {.Parent = Me, .Top = 50}
 
    Dim WithEvents btnAddNew As New Button With _
           {.Parent = Me, .Text = "Add New Row"}
 
    Dim ds As New DataSet
 
    Private Sub frmtest_Load(sender As System.Object, _
          e As System.EventArgs) Handles MyBase.Load
 
        'z.B. neue Zeile nur per Button erlauben, 
        'nicht direkt im Grid
        dg.AllowUserToAddRows = False 
 
        'Daten in das Dataset laden
        ds.ReadXml(xmlfile)
 
        'Tabelle ans Grid binden
        dg.DataSource = ds.Tables(0)
    End Sub
 
    Private Sub btnAddNew_Click(sender As Object, _
        e As System.EventArgs) Handles btnAddNew.Click
 
        'Neue Zeile erstellen
        Dim r As DataRow = ds.Tables(0).NewRow
 
        'neue zeile ggf. per Code mit Werten füllen
        ' ....... z.B. aus Textboxen
 
        'neue Zeile an die Tabelle anhängen
        ds.Tables(0).Rows.Add(r)
    End Sub
End Class
Die neue Zeile wird nach Betätigung des AddNew-Buttons im Click-Eventhandler
in die Table eingetragen und danach automatisch im Grid angezeigt.

Vermutlich wäre aber die bessere Alternative, Textboxen direkt an Daten-Spalten
zu binden.

Beitrag wurde zuletzt am 14.10.13 um 11:22:35 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: stefanbla80
Datum: 14.10.13 11:40

Hallo Manfred,

danke für das Beispiel - ist absolutes Neuland für mich.
Aber birgt gute Möglichkeiten ...

Wie kann ich eine neue Zeile einfügen und den Inhalt von Textboxen verwenden.

Bitte ein Beipsiel, dann kann ich weiter machen denke ich ...

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: Manfred X
Datum: 14.10.13 11:55

Angenommen, du besitzt für die Eingabe des neuen Wertes
in Spalte "Customer" eine TextBox namens "txtCustomer":

'neue zeile ggf. per Code mit Werten füllen
r("Customer") = txtCustomer.Text
'usw ... die Spalten der neuen Zeile "r" können per Spaltenname 
'oder Spaltenindex angesprochen werden.
Schau Dir aber auch mal die DataBindings-Eigenschaft der
TextBox an, z.b. Bindung der Textbox an eine Table-Spalte
(index 0, hier könnte auch der Spaltenname "Customer" stehen,
bzw. der Name der Tabelle).

txtCustomer.DataBindings.Add _
("Text", ds.Tables(0), ds.Tables(0).Columns(0).ColumnName)
Navigation durch Zeilen erfolgt z.B. über das DatagridView.

Beitrag wurde zuletzt am 14.10.13 um 11:59:39 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: DataGridView 
Autor: stefanbla80
Datum: 14.10.13 13:17

Hallo Manfred,

super - diese Info reicht mir.
Zumindest für heute mal!!

Hast mich weiter gebracht, vielen Danke

Grüße
Stefan
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel