Gridview immagini db

martedì 16 gennaio 2007 - 14.00

semcatering Profilo | Newbie

A visualizzare le immagini in un Gridview provenienti da un db campo image,proprio no ce la faccio.
C'è qualche buon anima che mi manda il codice vb basato su Northwind tabella Employees (c'è un campo image).

Scusate sono proprio alle prime armi.

alx_81 Profilo | Guru

>A visualizzare le immagini in un Gridview provenienti da un db
>campo image,proprio no ce la faccio.
>C'è qualche buon anima che mi manda il codice vb basato su Northwind
>tabella Employees (c'è un campo image).
Purtroppo non posso farti l'esempio al volo..
ma di solito in questi casi faccio una pagina aspx alla quale passo in GET l'id del record..
Prelevo l'immagine da una query basata su quell'id e faccio la response.binarywrite del campo image.

Poi nel gridview imposto l'url dell'immagine a quella pagina aspx passando l'id record corrente..
>
>Scusate sono proprio alle prime armi.
>

Alx81 =)

http://blogs.dotnethell.it/suxstellino

semcatering Profilo | Newbie

Purtroppo non ce la faccio,
Con un esempio capirei.

Grazie mille comunque

alx_81 Profilo | Guru

Eccoti l'esempio..
questo funziona con AdventureWorks, il nuovo DB di esempio di sql server 2005..
prova e fammi sapere!!
Al max sostituisci le query e il codice con i dati che ti servono per northwind, oppure installati AdventureWorks..
ciao!
Spero possa esserti di aiuto.
Alx81 =)

http://blogs.dotnethell.it/suxstellino

semcatering Profilo | Newbie

Funziona perfettamente.
Ti ringrazio
Ho dato un occhiata al codice,ci capisco quasi niente,devo studiare ancora parecchio!
Comunque sei stato gentile.
Grazie mille
ciao

alx_81 Profilo | Guru

>Funziona perfettamente.
>Ti ringrazio
>Ho dato un occhiata al codice,ci capisco quasi niente,devo studiare
>ancora parecchio!
Credimi.. non è nulla di complesso..
in poche parole, giusto per farti capire un po' meglio:

Parto da una pagina, che chiamiamo ElencoImmagini.aspx, con all'interno un GridView.
Prima di tutto devo creare un data source (sorgente dati) e per comodità creo un SqlDataSource (valido solo per SQL Server). All'interno definisco la query di selezione che popolerà la GridView, determinando gli eventuali parametri e l'elenco delle colonne che voglio visualizzare.
Nell'aspx inoltre definisco le colonne del GridView (impostando la proprietà AutoGenerateColumns a False, in modo che soltanto io possa definire i campi da visualizzare).
Aggiungo le colonne Bound (ovvero collegate direttamente alla sorgente dati) indicando nella proprietà DataField il nome del campo che voglio visualizzare.
Infine aggiungo un TemplateColumn (ovvero una colonna Modello) in cui definisco il layout, inserendo l'immagine <asp:Image>, senza però indicare la proprietà ImageUrl. Quest'ultima viene inserita nel .vb, e quindi viene creata LATO SERVER.
L'evento adatto è il RowDataBound del GridView, quindi ad ogni collegamento di ogni riga verso la sorgente dati, vado a comporre l'ImageUrl del mio <asp:Image> dinamicamente, in base all'ID visualizzato.
Il link si riferisce ad una pagina getImage.aspx, che non fa altro che visualizzare l'immagine relativa all'id passato nel link stesso.
Questa pagina, si connette al database e ricava il campo di tipo varbinary in base all'ID passato.. Facendo una response.BinaryWrite, l'intero stream viene scritto pari pari sulla pagina, e il browser lo interpreta come immagine (poichè il contenuto del campo è immagine, se non lo fosse, verrebbe interpretato in maniera differente).
Spero ti sia più chiaro il giro

PS: Accetta la risposta con l'apposito lin, così chiudiamo il thread.. ok?

>Comunque sei stato gentile.
>Grazie mille
Non c'è di che
>ciao
>


Alx81 =)

http://blogs.dotnethell.it/suxstellino
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5