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

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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