7 messaggi dal 26 novembre 2002
Il mio primo problema sarebbe quello di popolare una GridView inserendo come dati i nomi dei file cotenuti in una cartella.
il secondo quello di fare in modo che gli stessi risultino essere un collegamento ipertestuale al file stesso per poterene effettuare il download ( poi magari aggiungere anche la dimensione in un seconda colonna e la data in una terza)


Io riesco a popolare un listbox così

' leggi file nella cartella
Dim miaDir As DirectoryInfo = New DirectoryInfo(Server.MapPath(("~/public")))
Dim Nomifile() As FileInfo = miaDir.GetFiles()
For Each file As FileInfo In Nomifile
ListBox1.Items.Add(New ListItem(file.Name))
Next

Ma non ho la più pallida idea su come poplare la GridView

che ho sempre e solo popolato con dati in arrivo da db

Grazie
7 messaggi dal 26 novembre 2002
Comincio a rispondermi da solo almeno in parte

Popolo la GridView con questo codice nel file "XXXX.aspx.vb"

Dim miaDir As DirectoryInfo = New DirectoryInfo(Server.MapPath(("~/public")))
Dim fileInfos() As FileInfo = myDir.GetFiles()

GridView1.DataSource = fileInfos
GridView1.DataBind()


La GridView nel file "XXXX.aspx" è invece definita così

<asp:GridView ID="GridView1" runat="server" Style="z-index: 100; left: 173px; position: absolute;top: 172px" AutoGenerateColumns="False" Width="128px" BackColor="White" BorderColor="#3366CC" BorderStyle="None" BorderWidth="1px" CellPadding="4">
<Columns>
<asp:BoundField DataField="Name" HeaderText="Nome File" />
<asp:BoundField DataField="Length" HeaderText="Lunghezza" />
<asp:BoundField DataField="Extension" HeaderText="Estenzione" />
<asp:BoundField DataField="CreationTime" HeaderText="Data Ceazione" />
</Columns>
<FooterStyle BackColor="#99CCCC" ForeColor="#003399" />
<RowStyle BackColor="White" ForeColor="#003399" />
<PagerStyle BackColor="#99CCCC" ForeColor="#003399" HorizontalAlign="Left" />
<SelectedRowStyle BackColor="#009999" Font-Bold="True" ForeColor="#CCFF99" />
<HeaderStyle BackColor="#003399" Font-Bold="True" ForeColor="#CCCCFF" />
</asp:GridView>

Adesso provo a capire come trasformare
<asp:BoundField DataField="Name" HeaderText="Nome File" />

in qualcosa con NavigateUrl o qualcosa di simile
7 messaggi dal 26 novembre 2002
Ci eravamo lasciati a ....

Adesso provo a capire come trasformare

<asp:BoundField DataField="Name" HeaderText="Nome File" />

in qualcosa con NavigateUrl o qualcosa di simile




Ecco .... occorre trasformarlo così

<asp:TemplateField HeaderText="Nome File">
<ItemTemplate>
<asp:HyperLink
ID="HyperLink1"
runat="server"
NavigateUrl='<%# "~/public/" & Eval("Name") %>' Text='<%# Eval("Name") %>'>
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>


La soluzione dovrebbe essere OK e visto l'alto numero di utenti che hanno letto il post potrebbe interessare a qualcuno.
7 messaggi dal 26 novembre 2002
Nella soluzione precedente si ha il collegamento ipertestuale o l'aperura del file nel caso di file con estensione nota

qualora si volesse invece un download di un file legato al collegamento è possibile sostituire la famosa riga con

<asp:TemplateField HeaderText="Nome File">
<ItemTemplate>
<asp:HyperLink
id="HyperLink1"
runat="server"
NavigateUrl='<%# databinder.eval(container.dataitem, "name",
"Invia.aspx?NomeFile={0}")%>' Text='<%# Eval("Name") %>' >
</asp:HyperLink>
</ItemTemplate>
</asp:TemplateField>



e realizzare un file "Invia.aspx" fatto semplicemente così:
<%@ Page language="VB" AutoEventWireup="false" %>
<html>
<body>
<%
If Request.QueryString("NomeFile") <> "" Then
Response.Clear()
Response.AddHeader("Content-Disposition", "attachment;filename=" & Request.QueryString("NomeFile"))
Response.TransmitFile("~/public/" & Request.QueryString("NomeFile"))
Response.End()
End If
%>
</body>
</html>


Il metodo TrasmitFile dvrebbe essere più funzionale rispetto al WriteFile sopratutto quando si opera con File molto grandi
Modificato da crom@ il 19 gennaio 2009 23.54 -

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.