Datagridview e bitmap

venerdì 24 agosto 2007 - 07.19

khann77 Profilo | Newbie

Prima di tutto ciao a tutti e grazie per l'aiuto presente e futuro.
Avevo bisogno di consulenza a riguardo il datagridview in VB.Net (.NET 2005).
Desideravo sostituire delle stringhe, presenti in una colonna di un datagridview, con immagine bitmap.
Ho provato a basarmi su codesto codice:

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Ma si presenta un errore di conversione:

Impossibile eseguire il cast di oggetti di tipo 'System.Windows.Forms.DataGridViewTextBoxCell' sul tipo 'System.Windows.Forms.DataGridViewImageCell'

Se qualcuno mi può aiutare gliene sarei grato.
Saluti

SSUPERPIPPO Profilo | Guru

Non ho ben capito a cosa ti serva, comunque a runtime non mi pare che si possa fare una cosa del genere...

Forse ti conviene aggiungere una colonna di tipo DataGridViewImageColumn e inserirci l'immagine che ti interessa e nascondere quella di testo che non ti interessa visualizzare.

Ciao

Alessandro

khann77 Profilo | Newbie

Ciao e prima di tutto grazie per la risposta.
Allora, il datagridview lo creo a runtime assciando al suo datasource un file xml. Da questo file leggo delle stringhe, volevo creare una condizione dicendo che, per esempio, la stringa "Stato" vale OK allora disegnami sulla cella un pallino verde, se la stringa vale "Morto" allora disegnamelo rosso.

Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

Non ti spaventare....
Grazie.

SSUPERPIPPO Profilo | Guru

Perchè spaventarmi..?

Io creerei un Dataset scollegato dal DataGridView, ciclerei tutti i record modificando nel DataSet stesso il campo con l'immagine che a te serve, poi aggiungerei a mano le colonne e i record al DataGridView.

Non so se mi sono spiegato...

Fammi sapere, ciao

Alessandro

khann77 Profilo | Newbie

Scusa non capisco cosa intendi, aggiungere le colonne a mano. Una volta creato il datasest, non posso associarlo al datasource della grid?
Mi potresti mostrare un esempio di codice...?
Grazie

Alessandro

SSUPERPIPPO Profilo | Guru

Sì, hai ragione, una volta creato e modificato il DataTable puoi associarlo al DataGridView e il gioco è fatto.

Ciao

Alessandro

khann77 Profilo | Newbie

Ho capito cosa intendi adesso, ma sorge un altro problema. Come diavolo si associa un'immagine bitmap ad un dataset? Mi associa soltanto stringhe, quando voglio definirgli il type, si arrabbia.
Hai qualche suggerimanto in merito.

SSUPERPIPPO Profilo | Guru

Ti insegno un trucchetto.
Quando crei il DataSet, devi modificare la Select in questo modo

SELECT campo1, campo2, campoN...., , CONVERT(image, '') AS Immagine FROM ....

Aggiungendo CONVERT(image,"") AS Immagine, quando generi il DataTable derivante da questa Select, otterrai un campo aggiuntivo (chiaramente vuoto) in formato Blob dove potrai inserire la tua immagine a piacimento.

Prova e fammi sapere, ciao

Alessandro

khann77 Profilo | Newbie

Ciao, questo trucchetto è valido per una sorgente SQL o sempre? La mia sorgente è xml.. ho provato a fare così...

Dim dataSet As DataSet = New DataSet Dim dataTable As DataTable = New DataTable("table1") dataTable.Columns.Add("col1", Type.GetType("System.String")) dataTable.Columns.Add("col2", Type.GetType("System.String")) dataTable.Columns.Add("col3", Type.GetType("System.String")) dataTable.Columns.Add("col4", Type.GetType("System.String")) dataTable.Columns.Add("col5", Type.GetType("System.Drawing.Bitmap")) dataSet.Tables.Add(dataTable)

Una volta creato il dataset nuovo, con un ciclo for mi ricostruisco il dataset originale ma con il campo Bitmap.
Può esser corretto ciò?

Ciao

SSUPERPIPPO Profilo | Guru

Da provare ma credo proprio di sì.

Ciao

Ale

http://blogs.dotnethell.it/alebadalin
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5