Popolare gridview con immagini in altra directory

venerdì 23 novembre 2012 - 20.07
Tag Elenco Tags  VB.NET  |  .NET 4.0  |  Windows 7  |  Visual Studio 2010

Fapic Profilo | Junior Member

Salve mi scuso se questo mio post è identico ad un'altro mio precedente, ma per un mio errore l'avevo chiuso credendo di aver risolto il problema, che ancora c'è.

Allora, utilizzo il seguente codice per visualizzare in un gridview tutte le immagini della directory in cui si trova:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra

e poi le visualizzo così:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"> <Columns> <asp:ImageField DataAlternateTextField="Name" DataImageUrlField="Name"> </asp:ImageField> </Columns> </asp:GridView>
e fin qui tutto bene, il problema nasce quando tendo di leggerle in un'altra directory in questo modo:
Il codice sorgente non è stato renderizzato qui
perchè non c'è sufficiente spazio.
Clicca qui per visualizzarlo in una nuova finestra
così facendo il gridview mi ritorna solo i nomi dei file.jpg ma non mi fa vedere le immagini, ho provato anche a dare alla proprietà DataimageURLField il FullName ma non me le fa vedere lo stesso, potete aiutarmi?

alx_81 Profilo | Guru

>Salve mi scuso se questo mio post è identico ad un'altro mio
>precedente, ma per un mio errore l'avevo chiuso credendo di aver
>risolto il problema, che ancora c'è.
ciao

>così facendo il gridview mi ritorna solo i nomi dei file.jpg
>ma non mi fa vedere le immagini, ho provato anche a dare alla
>proprietà DataimageURLField il FullName ma non me le fa vedere
>lo stesso, potete aiutarmi?
puoi dirci cosa ti torna il Server.MapPath? Hai fatto debug per controllare che il path sia corretto? Non accontentarti del fatto che la cartella che vedi si chiama così.. Fai debug e prova a vedere il controllo trova la cartella giusta e se quel ToList torna la lista di file. Controlla anche ogni item cosa vale.
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

ridaria Profilo | Expert

anche io ritengo sia una questione di esatti percorsi etc.....

Hai verificatoo che nel secondo caso arrivino al controllo image gli URL e non i percorsi fisici?


e cioe:

http://www.sito.it/cartella/nomeFile.jpg

invece che:
D:/cartellaServer/subCartellaSito/cartella/nomeFile.jpg


Ciao
Riccardo D'Aria

Fapic Profilo | Junior Member


1139x822 62Kb

ho fatto le prove ma il gridview sia nel caso di name sia nel caso di FullName mi ritorna solo la lista dei file.jpg che sono nella cartella, ma non li visualizza come immagini, ho provato anche a dargli tutto il percorso dalla root principale "~/ipcam/Cam_1/2012-11-03" ma il risultato non cambia, i file li legge esatti cioè quelli che sono nella cartella, ma non li visualizza come immagini.

Fapic Profilo | Junior Member



ragazzi ho risolto così


Dim cartella = "2012-11-03/"
Dim dInfo As New DirectoryInfo(Server.MapPath(cartella))
Dim query = From fileInfo In dInfo.GetFiles()
Order By fileInfo.CreationTime Descending
Select New With {.Name = Path.Combine(cartella, fileInfo.Name)} 'Qui proietto il fileInfo su un tipo anonimo che ha una proprietà Name ottenuta concatenando cartella e nome del file

GridView1.DataSource = query
GridView1.DataBind()


Grazie

alx_81 Profilo | Guru

>
>
>ragazzi ho risolto così
esatto è quello che dicevamo, il path non era corretto
--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Fapic Profilo | Junior Member

solo che adesso non si perchè ma se imposto la proprietà allowpaging su true mi da errore

alx_81 Profilo | Guru

>solo che adesso non si perchè ma se imposto la proprietà allowpaging
>su true mi da errore
che errore, per cortesia, più dettagli

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Fapic Profilo | Junior Member

L'errore che mi da è questo:

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

e visual studio questo:
The data source does not support server-side data paging.

alx_81 Profilo | Guru

>L'errore che mi da è questo:
>The data source does not support server-side data paging.
>
prova a mettere un ToList() nella source..

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Fapic Profilo | Junior Member

Ho messo il .Tolist() qui:
Dim query = From fileInfo In dInfo.GetFiles().ToList()


però mi da sempre errore:
The data source does not support server-side data paging.

Fapic Profilo | Junior Member

Ok mettendolo sul query.ToList() funziona ma quando clicco pagina 2 non mi carica nulla e rimane pagina bianca

GridView1.DataSource = query.ToList()

alx_81 Profilo | Guru

>Ok mettendolo sul query.ToList() funziona ma quando clicco pagina
>2 non mi carica nulla e rimane pagina bianca
>
>GridView1.DataSource = query.ToList()
e debuggando il metodo di paginazione che succede? Imposti il new page index? Viene fatto il databind?

--
Alessandro Alpi | SQL Server MVP
MCP|MCITP|MCTS|MCT

http://www.alessandroalpi.net
http://blogs.dotnethell.it/suxstellino
http://mvp.microsoft.com/profiles/Alessandro.Alpi

Fapic Profilo | Junior Member

nel debug 0 errori

il new.page.Index lo ho messo cosi:
Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
GridView1.DataBind()
End Sub

però quando cambio pagina mi restituisce sempre pagina bianca con Crome ed explorer, mentre ora vedo che se provo con mozilla non mi ritorna le immagini ma ancora i nomi dei file....

Fapic Profilo | Junior Member

il problema con firefox l'ho risolto mi rimane quello del cambio pagina

Fapic Profilo | Junior Member

Credo di aver risolto ho copiato tutto il codice dell'evento buttonClick anche nell'evento PageIndexchangin

Dim cartella = "2012-11-03/"
Dim dInfo As New DirectoryInfo(Server.MapPath(cartella))
Dim query = From fileInfo In dInfo.GetFiles()
Order By fileInfo.CreationTime Descending
Select New With {.Name = Path.Combine(cartella, fileInfo.Name)} 'Qui proietto il fileInfo su un tipo anonimo che ha una proprietà Name ottenuta concatenando cartella e nome del file

GridView1.DataSource = query.ToList
GridView1.DataBind()


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-2017
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5