Zum Inhalt springen

Bild in einem Datagrid anzeigen


Empfohlene Beiträge

Geschrieben

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?

Geschrieben

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...

Geschrieben

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 :(

Geschrieben

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^^

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...