image spalte bild zuweisen

  • VB.NET
  • .NET (FX) 4.0

Es gibt 63 Antworten in diesem Thema. Der letzte Beitrag () ist von menorca.

    image spalte bild zuweisen

    möchte in der DGV ein Bild zuweisen?

    so fülle ich die DGV, in Spalte 4 soll die prio als Bild dargestellt werden 1 = grün | 2 = gelb| 3 = rot
    bild aus der recource

    Visual Basic-Quellcode

    1. Public Class frmMain
    2. '//
    3. Inherits Form
    4. Private dtToDo As DataTable
    5. Private dvToDo As DataView
    6. '//
    7. Public Sub New()
    8. InitializeComponent()
    9. Try
    10. ' DataGridView
    11. dgvAufgaben.AutoGenerateColumns = False
    12. dgvAufgaben.ShowCellErrors = False
    13. dgvAufgaben.ShowRowErrors = False
    14. dgvAufgaben.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None
    15. dgvAufgaben.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    16. dgvAufgaben.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing
    17. dgvAufgaben.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
    18. ' DataTable
    19. dtToDo = New DataTable("ToDoList")
    20. ' Set DataTable columns
    21. dtToDo.Columns.Add("Nr", GetType([Int32])) '0 ID
    22. dtToDo.Columns.Add("Eintrag", GetType([DateTime])) '1 ToDoEintrag (Datum)
    23. dtToDo.Columns.Add("Aufgabe", GetType([String])) '2 Aufgabenbeschreibung
    24. dtToDo.Columns.Add("Art", GetType([String])) '3 Aufgabentyp
    25. dtToDo.Columns.Add("Priorität", GetType([Image])) '4 Wichtigkeit /3=Rot|2=Gelb|1=Grün
    26. dtToDo.Columns.Add("Dauer", GetType([Int32])) '5 Dauer in Minuten
    27. dtToDo.Columns.Add("Restzeit", GetType([Int32])) '6 Tagesrestzeit
    28. ' Bindings
    29. dgvAufgaben.Columns(0).DataPropertyName = "Nr"
    30. dgvAufgaben.Columns(1).DataPropertyName = "Eintrag"
    31. dgvAufgaben.Columns(2).DataPropertyName = "Aufgabe"
    32. dgvAufgaben.Columns(3).DataPropertyName = "Art"
    33. dgvAufgaben.Columns(4).DataPropertyName = "Prio" ' Image zuweisen 3=Rot|2=Gelb|1=Grün
    34. dgvAufgaben.Columns(5).DataPropertyName = "Dauer"
    35. dgvAufgaben.Columns(6).DataPropertyName = "Restzeit"
    36. 'Spaltenbreiten
    37. dgvAufgaben.Columns(0).Width = 50
    38. dgvAufgaben.Columns(1).Width = 40
    39. dgvAufgaben.Columns(2).Width = 150
    40. dgvAufgaben.Columns(3).Width = 40
    41. dgvAufgaben.Columns(4).Width = 50
    42. dgvAufgaben.Columns(5).Width = 50
    43. dgvAufgaben.Columns(6).Width = 50
    44. ' Verbindung zur Datenbank herstellen
    45. Dim verbindung As OleDb.OleDbConnection = _
    46. New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\_Meine Anwendungen\Todoliste\MyTODOLIST.mdb")
    47. ' SQL String generieren
    48. Dim strsql = "SELECT ToDoTab.ToDoID AS Nr, " & _
    49. "ToDoTab.ToDoEintrag AS Eintrag," & _
    50. "ToDoTab.ToDoAufgabe AS Aufgabe," & _
    51. "ToDoTab.ToDoArt AS Art," & _
    52. "ToDoTab.ToDoPrio AS Prio, " & _
    53. "ToDoTab.ToDoDauer AS Dauer," & _
    54. "ToDoTab.ToDoRestzeit AS Restzeit " & _
    55. "FROM ToDoTab;"
    56. Dim ausfuehren As New OleDb.OleDbCommand(strsql, verbindung)
    57. Dim ds As New DataSet
    58. Dim da As New OleDb.OleDbDataAdapter(ausfuehren)
    59. da.Fill(dtToDo)
    60. ' DataView from DataTable
    61. dvToDo = New DataView(dtToDo)
    62. ' Bind DataView to DataGridView
    63. dgvAufgaben.DataSource = dvToDo
    64. Catch ex As Exception
    65. MsgBox("Fehler: " & vbCrLf & _
    66. ex.Message)
    67. End Try
    68. End Sub
    69. End Class


    Thread verschoben

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „FlashTek“ ()

    Bilder angefügt

    habe 2 Bilder hochgeladen, wenn ich die Spalte als Image deklariere habe ich ein Problem.
    wie bkomme ich nun statt der Ziffern 1,2 oder 3 ein icon in die DGV Spalte
    Bilder
    • Unbenannt.JPG

      112,51 kB, 792×631, 277 mal angesehen
    • image.JPG

      43,21 kB, 887×444, 278 mal angesehen
    Ja,

    Quellcode

    1. ' DataTable
    2. dtToDo = New DataTable("ToDoList")
    3. ' Set DataTable columns
    4. dtToDo.Columns.Add("Nr", GetType([Int32])) '0 ID
    5. dtToDo.Columns.Add("Eintrag", GetType([DateTime])) '1 ToDoEintrag (Datum)
    6. dtToDo.Columns.Add("Aufgabe", GetType([String])) '2 Aufgabenbeschreibung
    7. dtToDo.Columns.Add("Art", GetType([String])) '3 Aufgabentyp
    8. dtToDo.Columns.Add("Priorität", GetType([Byte])) '4 Wichtigkeit /3=Rot|2=Gelb|1=Grün
    9. dtToDo.Columns.Add("Dauer", GetType([Int32])) '5 Dauer in Minuten
    10. dtToDo.Columns.Add("Restzeit", GetType([Int32])) '6 Tagesrestzeit
    11. ' Bindings
    12. dgvAufgaben.Columns(0).DataPropertyName = "Nr"
    13. dgvAufgaben.Columns(1).DataPropertyName = "Eintrag"
    14. dgvAufgaben.Columns(2).DataPropertyName = "Aufgabe"
    15. dgvAufgaben.Columns(3).DataPropertyName = "Art"
    16. dgvAufgaben.Columns(4).DataPropertyName = "Prio" ' Image zuweisen 3=Rot|2=Gelb|1=Grün
    17. dgvAufgaben.Columns(5).DataPropertyName = "Dauer"
    18. dgvAufgaben.Columns(6).DataPropertyName = "Restzeit"
    19. 'Spaltenbreiten
    20. dgvAufgaben.Columns(0).Width = 60
    21. dgvAufgaben.Columns(1).Width = 100
    22. ' Verbindung zur Datenbank herstellen
    23. Dim verbindung As OleDb.OleDbConnection = _
    24. New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\_Meine Anwendungen\Todoliste\MyTODOLIST.mdb")
    25. ' SQL String generieren
    26. Dim strsql = "SELECT ToDoTab.ToDoID AS Nr, " & _
    27. "ToDoTab.ToDoEintrag AS Eintrag," & _
    28. "ToDoTab.ToDoAufgabe AS Aufgabe," & _
    29. "ToDoTab.ToDoArt AS Art," & _
    30. "ToDoTab.ToDoPrio AS Prio, " & _
    31. "ToDoTab.ToDoDauer AS Dauer," & _
    32. "ToDoTab.ToDoRestzeit AS Restzeit " & _
    33. "FROM ToDoTab;"
    34. Dim ausfuehren As New OleDb.OleDbCommand(strsql, verbindung)
    35. Dim ds As New DataSet
    36. Dim da As New OleDb.OleDbDataAdapter(ausfuehren)
    37. da.Fill(dtToDo)
    38. ' DataView from DataTable
    39. dvToDo = New DataView(dtToDo)
    40. ' Bind DataView to DataGridView
    41. dgvAufgaben.DataSource = dvToDo
    42. Catch ex As Exception
    43. MsgBox("Fehler: " & vbCrLf & _
    44. ex.Message)
    45. End Try
    Sorry, dtToDo.Columns.Add("Priorität", GetType(Byte())) so steht es jetzt drin

    Fehlermeldung: s.Bild ---> siehe auch Einstellungen.

    wie bekomme ich denn nun auch ein Bild dahin?
    Bilder
    • Unbenannt.JPG

      122,96 kB, 875×706, 237 mal angesehen
    • Prio.JPG

      76,42 kB, 852×545, 258 mal angesehen

    menorca schrieb:

    die bilder sollen ja nach Integer eingefügt werden oder geht so etwas nicht

    Hallöle,
    wenn Du z.B. Deine Bilder in einer ImageList hast, kannst Du sie bequem über einen Integer-Index einfügen.
    Ich habe mal Deinen Code leicht modifiziert und eine Testumgebung gebastelt - da kann Du nach Herzenslust probieren - ok?

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Option Explicit On
    2. Option Strict On
    3. Public Class Form1
    4. Private dtToDo As DataTable
    5. Public Sub New()
    6. InitializeComponent()
    7. ' Set DataGridView
    8. dgvAufgaben.AutoGenerateColumns = False
    9. dgvAufgaben.ShowCellErrors = False
    10. dgvAufgaben.ShowRowErrors = False
    11. dgvAufgaben.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.None
    12. dgvAufgaben.SelectionMode = DataGridViewSelectionMode.FullRowSelect
    13. dgvAufgaben.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing
    14. dgvAufgaben.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.DisableResizing
    15. dgvAufgaben.DefaultCellStyle.NullValue = Nothing
    16. ' Nullvalue in ImageColumn
    17. dgvAufgaben.Columns(4).DefaultCellStyle.NullValue = Nothing
    18. ' Column Bindings
    19. dgvAufgaben.Columns(0).DataPropertyName = "Nr"
    20. dgvAufgaben.Columns(1).DataPropertyName = "Eintrag"
    21. dgvAufgaben.Columns(2).DataPropertyName = "Aufgabe"
    22. dgvAufgaben.Columns(3).DataPropertyName = "Art"
    23. dgvAufgaben.Columns(4).DataPropertyName = "Prio"
    24. dgvAufgaben.Columns(5).DataPropertyName = "Dauer"
    25. dgvAufgaben.Columns(6).DataPropertyName = "Restzeit"
    26. End Sub
    27. ''' <summary>
    28. ''' Push the Button ;)
    29. ''' </summary>
    30. ''' <param name="sender"></param>
    31. ''' <param name="e"></param>
    32. ''' <remarks></remarks>
    33. Private Sub btnAction_Click(sender As Object, e As EventArgs) Handles btnAction.Click
    34. ' DataTable
    35. dtToDo = New DataTable("ToDoList")
    36. ' Set DataTable columns
    37. dtToDo.Columns.Add("Nr", GetType([Int32]))
    38. dtToDo.Columns.Add("Eintrag", GetType([String]))
    39. dtToDo.Columns.Add("Aufgabe", GetType([String]))
    40. dtToDo.Columns.Add("Art", GetType([String]))
    41. dtToDo.Columns.Add("Prio", GetType([Image]))
    42. dtToDo.Columns.Add("Dauer", GetType([Int32]))
    43. dtToDo.Columns.Add("Restzeit", GetType([Int32]))
    44. ' Set 100 Test-Rows
    45. For i As Integer = 1 To 100
    46. dtToDo.Rows.Add(i, DateTime.Now.AddDays(-i), "Aufgabe Nr. " & i.ToString(), "Typ " & i.ToString(), ImageList1.Images.Item(i Mod 2), i, i)
    47. Next
    48. ' Bind DataTable
    49. dgvAufgaben.DataSource = dtToDo
    50. End Sub
    51. End Class


    Das sieht dann so aus:



    Projekt als Anhang anbei..

    Viel Spaß beim Tüfteln,
    Bruno
    Dateien
    • PicInDGV.zip

      (78,69 kB, 208 mal heruntergeladen, zuletzt: )
    Danke Bruno,
    dein projekt konnte ich nicht öffnen, Fehler aufgrund Erstellung mit neuerer Version
    habe meine Mappe mal hochgeladen.

    Bitte auf D:\ entpacken dann haste den Ordner mit der mdb dort wo ich zugreife für die daten.

    MFG
    Menorca
    Dateien
    • ToDoListe.zip

      (2,36 MB, 221 mal heruntergeladen, zuletzt: )

    menorca schrieb:

    habe meine Mappe mal hochgeladen.
    Fang an und verwende einen dynamischen Datanbankpfad:

    VB.NET-Quellcode

    1. ' Verbindung zur Datenbank herstellen
    2. Dim verbindung As OleDb.OleDbConnection = _
    3. New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\_Meine Anwendungen\Todoliste\MyTODOLIST.mdb")
    ==>

    VB.NET-Quellcode

    1. Dim path = "C:\Temp\BlaBla\ToDoListe\MyTODOLIST.mdb"
    2. ' Verbindung zur Datenbank herstellen
    3. Dim verbindung As OleDb.OleDbConnection = _
    4. New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & path)
    In Deiner MDB ist Prio ein Integer, in Deinem DataGridView ist Prio ein Image.
    Irgendwo in Deinem Code solltest Du aus den Datenbank-Integers ein kommunizierendes Image bereitstellen und in Deine DataTable packen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!