Autor
|
Thema: TextBox zu DGV / DGV zu XML und zurück (2190 mal gelesen)
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 06. Feb. 2014 07:32 <-- editieren / zitieren --> Unities abgeben:
··· Diskussionsforen · VB.NET - Ein- und Umsteiger Sie sind aktuell nicht angemeldet. Funktionen: Einloggen | Neu registrieren | Suchen VB.NET - Ein- und Umsteiger TextBox.Text nach DGV / DGV in XML speichern und wieder laden Autor: hoff01 Datum: Heute, 07:25
-------------------------------------------------------------------------------- Guten Morgen zusammen, ich zerbrech mir nun seit einigen Tagen den Kopf zu folgendem: Auf einer Form habe ich TextBoxen, deren Werte ich in ein DGV (DataGridView) übernehmen möchte. Die Inhalte des DGV sollen in eine XML Datei geschrieben werden. Hintergrund, diese Werte aus der XML sollen von einer fremden Anwendung gelesen werden. Um meine Daten zu bearbeiten muß ich auch wieder auf die Daten XML zugreifen, in meinem Programm bearbeiten und wieder abspeichern. Ich habe versucht mich durch die Vielzahl an Beiträgen zu diesem Thema durchzuarbeiten und habe auch schon so einiges ausprobiert mit mehr oder weniger Erfolg. Letzter Stand ist: Nun kann ich zwar das DGV händisch Zelle für Zelle befüllen und über ein DataSet in die XML schreiben und wieder auslesen. Code:
Private dt As System.Data.DataTable Private Function getDataTable() As System.Data.DataTable Dim dt As New System.Data.DataTable("Zukaufteile") Dim col0 As System.Data.DataColumn = dt.Columns.Add("Teile-Nr", GetType( _ System.String)) col0.DefaultValue = String.Empty Dim col1 As System.Data.DataColumn = dt.Columns.Add("Anzahl", GetType( _ System.String)) col1.DefaultValue = String.Empty '.... '.... Dim col8 As System.Data.DataColumn = dt.Columns.Add("Einheitspreis", _ GetType(System.String)) col8.DefaultValue = String.Empty Return dt End Function Private Sub formatDataGridView(ByVal dgv As DataGridView) ' Datum formatieren: dgv.Columns.Remove("Teile-Nr") Dim tbc1 As New DataGridViewTextBoxColumn() tbc1.DataPropertyName = "Teile-Nr" tbc1.HeaderText = "Teile-Nr" tbc1.Width = 60 'tbc1.DefaultCellStyle.Format = "d" tbc1.DefaultCellStyle.Alignment = _ DataGridViewContentAlignment.MiddleLeft tbc1.DisplayIndex = 0 dgv.Columns.Add(tbc1) '.... '.... dgv.Columns.Remove("Einheitspreis") Dim tbc9 As New DataGridViewTextBoxColumn() tbc9.DataPropertyName = "Einheitspreis" tbc9.HeaderText = "Einheitspreis" tbc9.Width = 40 'tbc9.DefaultCellStyle.Format = "d" tbc9.DefaultCellStyle.Alignment = _ DataGridViewContentAlignment.MiddleLeft tbc9.DisplayIndex = 8 dgv.Columns.Add(tbc9) End Sub Protected Overrides Sub OnLoad(ByVal e As System.EventArgs) dt = getDataTable() DataGridView1.DataSource = dt ' Datengitter an DataTable ' anbinden formatDataGridView(DataGridView1) ' ... und formatieren MyBase.OnLoad(e) End Sub Private Sub CMB_Datei_laden_Click(sender As System.Object, e As _ System.EventArgs) Handles CMB_Datei_laden.Click dt.ReadXml("C:\temp\Test.xml") End Sub Private Sub CMB_Datei_speichern_Click(sender As System.Object, e As _ System.EventArgs) Handles CMB_Datei_speichern.Click dt.WriteXml("C:\temp\Test.xml", XmlWriteMode.WriteSchema) End Sub
Wie bekomme ich nun aber die gefüllten TextBoxinhalte ins DGV? In einem vorherigen Test ging das so. Code:
Private Sub CMB_Daten_speichern_Click(sender As System.Object, e As _ System.EventArgs) Handles CMB_Daten_speichern.Click Dim n As Integer = DataGridView1.Rows.Add() Try With DataGridView1 .Rows.Item(n).Cells(0).Value = TB_TNR.Text .Rows(n).Cells(0).ValueType.ToString() '.... '.... .Rows.Item(n).Cells(8).Value = TB_EPREIS.Text .Rows(n).Cells(8).ValueType.ToString() End With Catch ex As System.Exception MsgBox("Fehler bei der Datenübernahme in das DGV!" & vbCrLf & _ ex.Message, MsgBoxStyle.Information, "Information!") End Try End Sub
Wie bekomme ich nun die TextBoxinhalte über das DataSet / DataTable ins DGV? Für Hilfe schon mal vielen Dank im voraus. ------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 06. Feb. 2014 08:19 <-- editieren / zitieren --> Unities abgeben: Nur für Dirk.B
|
Patrick Weber Mitglied Konstruktionstechniker, Admin
Beiträge: 657 Registriert: 20.11.2006 Win7 Pro SP1 64Bit HP Z230, Core i5, 8GB RAM, nv Quadro K600 Creo Elements/Direct 19.0 M010 ModelManager 19.0 M010 clisp,VB.net,VBA,AHK,php,javascript
|
erstellt am: 06. Feb. 2014 09:19 <-- editieren / zitieren --> Unities abgeben: Nur für Dirk.B
Du musst in der gebundenen Datenquelle einfügen, nicht im DGV. Code: Private Sub CMB_Daten_speichern_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CMB_Daten_speichern.Click Dim nr As System.Data.DataRow = dt.Rows.Add() nr.Item(0) = TB_TNR.Text nr.Item(1) = TB_ANZAHL.Text nr.Item(2) = TB_EPREIS.Text End Sub
------------------ Patrick Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 06. Feb. 2014 14:11 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! @MWN Vielen Dank für die Infos. @Patrick Das funktioniert prima. Nun noch die Frage, wie geht es, wenn ich eine Zeile überschreiben möchte. Ohne DataBinding ging das so:
Code:
With DataGridView1 .CurrentRow.Cells(0).Value = TB_TNR.Text .CurrentRow.Cells(0).ValueType.ToString() .CurrentRow.Cells(1).Value = TB_ANZ.Text .CurrentRow.Cells(1).ValueType.ToString() '...
Gibt es dafür auch eine Lösung? Vielen Dank im Voraus. ------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 778 Registriert: 18.05.2005 SolidWorks 2020 x64 SP3.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 21H1 Microsoft Office 365 ProPlus Microsoft Visual Studio Enterprise 2022
|
erstellt am: 06. Feb. 2014 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für Dirk.B
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 13. Feb. 2014 09:37 <-- editieren / zitieren --> Unities abgeben:
|
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003 AutoCAD 2021/2022 CAD+T HP ZBook 15 G4, 64-bit, WIN 10 Pro
|
erstellt am: 28. Feb. 2014 12:26 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen! Das mit dem DataBinding div. Controls läuft nun soweit.
Code:
bs.DataSource = dt '... TB_PD_NUM.DataBindings.Clear() TB_M_Bestelltext.DataBindings.Clear() '... TB_PD_NUM.DataBindings.Add(New Binding("Text", bs, "PD_NUM", True)) TB_M_Bestelltext.DataBindings.Add(New Binding("Text", bs, "M_BESTELLTEXT", True))
Hab nun das Problem eine PictureBox anzubinden. Kurze Info dazu. In dem Feldnamen "M_ZNAME_PLINE" steht ein Pfad mit Dateinamen, z.B.. C:\D\Konstruktion\AutoCAD\Bloecke_Artikel\108\APV-150-STBL 65_D.dwg Die letzten 4 Zeichen .dwg sollen in .wmf getauscht werden, damit das Bild zu der DWG - Datei angezeigt wird. Hab es schon mal so probiert, jedoch ohne Erfolg. Code:
Me.DataBindings.Add(New Binding("Text", bs, (Strings.Right("M_ZNAME_PLINE", 5) & "D.wmf"), True, _ DataSourceUpdateMode.OnPropertyChanged))
Hat jemand eine Idee ob das so überhaupt funktionieren könnte, oder gibt es da eine andere Möglichkeit des DataBindings. Für Hilfe schon mal vielen Dank im Voraus. ------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dirk.B Mitglied Tischler / Leiter Arbeitsvorbereitung
Beiträge: 534 Registriert: 25.11.2003
|
erstellt am: 28. Feb. 2014 12:39 <-- editieren / zitieren --> Unities abgeben:
... sorry Bzgl. PictureBox hatte ich es so probiert:
Code:
PictureBox2.DataBindings.Add(New Binding("Image", bs, (Strings.Right("M_ZNAME_PLINE", 4) & ".wmf"), True, _ DataSourceUpdateMode.OnPropertyChanged))
------------------ Gruß Dirk Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|