Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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?

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

  • Autor

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

  • Autor

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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.