Sarene Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Hallo, ich würde gerne ein Bild in einer Zelle eines Datagrid angezeigt bekommen. Ich dachte, ich speicher das Bild direkt in das DataTable. Dafür habe ich folgenden Code: Die Deklaration des Bitmaps... Dim bild As Bitmap = New Bitmap(bildpfad) Das Einfügen des Bildes... Dim row As DataRow = dt.NewRow() row(0) = "test1" row(1) ="test2" row(2) = bild Allerdings liefert mir das Datagrid anstatt einem Bild diesen Text --> System.Drawing.Bitmap Den Namespace system.Drawing habe ich auch schon importiert. Ich müsste wohl die GetType-Methode verwenden. Aber wie binde ich das ein? Zitieren
Guybrush Threepwood Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Du musst die einen eigenen Column und Cell Type anlegen und die Spalte deines Grids dann vom Typ deiner Column machen. Im Constructor deiner Column Klasse weißt du dieser als CustomCellTemplate dann deine eigene Cell Klasse zu und welchen ValueType du dieser Spalte zuweisen willst. In deiner Cell Klasse überschreibst du dann GetFormattedValue und ermittelst dort das Bild aus dem Value der Zelle. Hier mal ein Beispiel von mir wo ich anhand einer Nummer ein bestimmtes Bild anzeige: private class CustomImageColumn : DataGridViewImageColumn { public CustomImageColumn() { this.CellTemplate = new CustomImageCell(); this.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; this.ValueType = typeof(int); } } private class CustomImageCell : DataGridViewImageCell { protected override object GetFormattedValue(object value, int rowIndex, ref DataGridViewCellStyle cellStyle, TypeConverter valueTypeConverter, TypeConverter formattedValueTypeConverter, DataGridViewDataErrorContexts context) { if (value != null) { Assembly Assembly = Assembly.GetExecutingAssembly(); return Image.FromStream(Assembly.GetManifestResourceStream(@"MyNamespace." + value.ToString() + ".jpg")); } return null; } } [/PHP] Bei dir müsste dann der ValueType evtl Bitmap sein und du in der GetFormattedValue Methode dieses dann einfach nur zurückgeben. Aber das musst du mal probieren... Zitieren
Sarene Geschrieben 24. Oktober 2008 Autor Geschrieben 24. Oktober 2008 Hi danke für deine schnelle Antwort. Leider hilft sie mir aber nicht so recht weiter. Das liegt aber eher an meiner fehlenden Programmierfahrung ;-) Ich programmiere das Ganze in VB.net (hätte ich sagen sollen, sorry). Da gibt es zum Beispiel kein DataGridViewImageColumn. Welchen Namespace brauch man dafür? Ich habe nach etwas googlen die Anleitung bekommen, diese GetTyp-Methode bei der Spaltenerzeugen festzulegen...hast du das in etwa gemeint? das sieht dann ungefähr so aus: tabelle.Columns.Add("bild", GetType(bitmap)) Aber das funktioniert leider auch net Zitieren
Guybrush Threepwood Geschrieben 24. Oktober 2008 Geschrieben 24. Oktober 2008 Ich programmiere das Ganze in VB.net (hätte ich sagen sollen, sorry). Da gibt es zum Beispiel kein DataGridViewImageColumn. Welchen Namespace brauch man dafür? Ob VB oder C# macht da keinen Unterschied. DataGridViewImageColumn-Klasse (System.Windows.Forms) Zitieren
Sarene Geschrieben 24. Oktober 2008 Autor Geschrieben 24. Oktober 2008 Für nen Anfänger ist das erstmal verwirrend ;-) Den Namespace System.Windows.Forms habe ich schon versucht einzubinden, aber er kann irgendwie nicht gefunden werden. Ich bin auch im CodeBehind von ASPX..vielleicht liegts daran^^ Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.