Morgen zusammen,
ich komme bei einer Sache nicht so recht weiter, vielleicht könnt ihr mir da etwas Input geben oder sehen woran es liegt.
Für ein TreeView mit Bilder (*.png)
bei jedem Knoten welches bis jetzt statisch über eine ImageList läuft, soll mehr Dynamik rein, in Form von selber anlegbaren Geräteklassen.
Dies ist der Grund warum die Bilder in die DB sollen und kein Link zur Datei, wie ich es normalerweise machen würde genutzt werden soll.
Meine erste Idee war nur mit SELECT * abfragen und ans Datagridview übergeben, sobald dieses feststellt das es sich um eine Grafik handelt
nimmt er automatisch DataGridViewImageColumn, wie bei Checkboxen und der gleichen auch aber Pustekuchen, dass funktioniert so nicht.
Die Datenbasis ist Access 2010 (*.accdb) die Tabelle dbo_deviceclasses sieht wie folgt aus. IDE ist Visual Studio 2005 professional inkl. SP1
noch bis Ende Januar dann kommt Visual Studio 2013 professional und das Projekt wird migriert
Das einlesen und speichern von Bildern geht, aber das anzeigen von Bildern in einer Spalte des Datagridview will absolut nicht gehen,
ich habe gefüllt jetzt alle mir bekannten Kombinationen OLEDBParameter, DataGridViewImageCell durchprobiert bis jetzt ohne Erfolg,
mehr als dieses kommt nicht raus.
das aktuelle Dataset sieht beim debuggen so aus
Hier einmal die Methode die bei Start der Form aufgerufen wird und das Datagridview mit zwei Spalten befüllen soll.
Hat einer von euch eine Idee, ein plastisches Beispiel wie das laden eines Bildes aus einer Access Datenbank mit Feldtyp "Anlage" vllt. auch OLE-Objekt, es muss pro Datensatz eh nur ein Bild gespeichert und geladen werden.
ich komme bei einer Sache nicht so recht weiter, vielleicht könnt ihr mir da etwas Input geben oder sehen woran es liegt.
Für ein TreeView mit Bilder (*.png)
bei jedem Knoten welches bis jetzt statisch über eine ImageList läuft, soll mehr Dynamik rein, in Form von selber anlegbaren Geräteklassen.
Dies ist der Grund warum die Bilder in die DB sollen und kein Link zur Datei, wie ich es normalerweise machen würde genutzt werden soll.
Meine erste Idee war nur mit SELECT * abfragen und ans Datagridview übergeben, sobald dieses feststellt das es sich um eine Grafik handelt
nimmt er automatisch DataGridViewImageColumn, wie bei Checkboxen und der gleichen auch aber Pustekuchen, dass funktioniert so nicht.
Die Datenbasis ist Access 2010 (*.accdb) die Tabelle dbo_deviceclasses sieht wie folgt aus. IDE ist Visual Studio 2005 professional inkl. SP1
noch bis Ende Januar dann kommt Visual Studio 2013 professional und das Projekt wird migriert
Das einlesen und speichern von Bildern geht, aber das anzeigen von Bildern in einer Spalte des Datagridview will absolut nicht gehen,
ich habe gefüllt jetzt alle mir bekannten Kombinationen OLEDBParameter, DataGridViewImageCell durchprobiert bis jetzt ohne Erfolg,
mehr als dieses kommt nicht raus.
das aktuelle Dataset sieht beim debuggen so aus
Hier einmal die Methode die bei Start der Form aufgerufen wird und das Datagridview mit zwei Spalten befüllen soll.
VB.NET-Quellcode
- ' Geräteklassen laden
- Private Sub fillDeviceClasses(ByRef bStatus As Boolean)
- Dim DMDB As New OleDbConnection(frmMain.getProviderString)
- Dim DBSQLStr As String = "SELECT deviceclass_ID, Geräteklasse, Gerätebild, Status, Bemerkung FROM dbo_DeviceClasses WHERE Status =" & bStatus & ";"
- Dim DBDataAdapter As New OleDbDataAdapter(DBSQLStr, DMDB)
- Dim DBDataset As New DataSet
- Dim imgDGVColumn As New DataGridViewImageColumn
- 'DataGridView1 definieren
- With DataGridView1
- .AutoGenerateColumns = True
- .AllowUserToOrderColumns = False
- .RowHeadersVisible = False
- .AllowUserToAddRows = False
- .AllowUserToDeleteRows = False
- .ReadOnly = True
- End With
- 'DB Operationen durchführen
- Try
- DMDB.Open()
- DBDataAdapter.Fill(DBDataset, "dbo_DeviceClasses")
- DBDataAdapter.Dispose()
- DMDB.Close()
- DataGridView1.DataSource = DBDataset.Tables("dbo_DeviceClasses")
- 'ausblenden von Spalten
- Me.DataGridView1.Columns("deviceclass_ID").Visible = False
- Me.DataGridView1.Columns("Gerätebild").Visible = False 'Original Spalte ausblenden
- Me.DataGridView1.Columns("Status").Visible = False
- Me.DataGridView1.Columns("Bemerkung").Visible = False
- With imgDGVColumn
- .HeaderCell.Value = "Gerätebild"
- .DataPropertyName = "dbo_DeviceClasses"
- .HeaderText = "Gerätebild"Gerätebild
- .Name = "Gerätebild"
- .ValuesAreIcons = True
- End With
- DataGridView1.Columns.Add(imgDGVColumn)
- Catch ex As OLEDBException
- MessageBox.Show("Während der Verarbeitung, trat der folgenden Fehler auf : " & ex.Message, frmMain.sAppName, MessageBoxButtons.OK, MessageBoxIcon.Stop)
- End Try
- End Sub
Hat einer von euch eine Idee, ein plastisches Beispiel wie das laden eines Bildes aus einer Access Datenbank mit Feldtyp "Anlage" vllt. auch OLE-Objekt, es muss pro Datensatz eh nur ein Bild gespeichert und geladen werden.
VG steel
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „steel75“ ()