59 messaggi dal 27 ottobre 2009
Ciao a tutti,
ho creato un'area privata da cui l'utente può gestire, tra le altre cose, anche upload e la cancellazione di immagini di una gallery in Flash. Il file .swf legge il path da un file XML. Le immagini vengono visualizzate nella pagina .aspx con un GridView, che mostra Nome, Byte e Ultimo Aggiornamento. Fino a qui tutto bene.

Attualmente però la cancellazione dei file immagine viene fatta per l'intero contenuto della cartella:

  
  DirectoryInfo dir = new DirectoryInfo(filePath);  
  
            FileInfo[] files = dir.GetFiles("*.jpg");  
  
            foreach (FileInfo file in files)  
            {  
                file.Delete();  
            }  
  


Quindi premendo il pulsante tutti i file immagine di quella cartella vengono eliminati.

Quello che sto cercando di fare è di permettere all'utente di cancellare i file uno alla volta a sua scelta. In altre parole ho la necessità di aggiornare solo alcuni file immagine senza necessariamente cancellarli tutti.

Grazie
Quello che sto cercando di fare è di permettere all'utente di cancellare i file uno alla volta a sua scelta. In altre parole ho la necessità di aggiornare solo alcuni file immagine senza necessariamente cancellarli tutti.

o non ho capito bene io il problema, oppure a te basta nel ciclo decidere cosa fare. o, ancora, variare il pattern che usi in GetFiles per farti dare solo i file che effettivamente ti interessano.
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
59 messaggi dal 27 ottobre 2009
Ciao Daniele e grazie per la risposta.
Potresti gentilmente farmi un esempio o indirizzarmi a qualche discussione ad-hoc. Evidentemente sto cercando con la chiave sbagliata, ma non ho trovato niente. Grazie.
thedoors wrote:
Ciao Daniele e grazie per la risposta.
Potresti gentilmente farmi un esempio o indirizzarmi a qualche discussione ad-hoc. Evidentemente sto cercando con la chiave sbagliata, ma non ho trovato niente. Grazie.

beh, l'opzione è semplice: una volta che recuperi i file selezionati, da checkbox, fai un bel File.Delete(path).
non sai come recuperare lo stato dei controlli selezionati?
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
59 messaggi dal 27 ottobre 2009

beh, l'opzione è semplice: una volta che recuperi i file selezionati, da checkbox, fai un bel File.Delete(path).
non sai come recuperare lo stato dei controlli selezionati?
.

Allora, ricapitolando:
in aspx, recupero i dati della cartella attraverso una GridView:

  
  <asp:GridView ID="GridView1" Width="100%" AutoGenerateColumns="false" runat="server"  
                            HeaderStyle-BackColor="Indigo">  
                            <Columns>  
                                <asp:BoundField DataField="Name" HeaderText="Nome" />  
                                <asp:BoundField DataField="Length" HeaderText="Byte" />  
                                <asp:BoundField DataField="LastWriteTime" HeaderText="Ultimo Aggiornamento" />  
                            </Columns>  
                            <HeaderStyle BackColor="WhiteSmoke" ForeColor="Black" />  
                        </asp:GridView>  


in code behind, visualizzo tutti i file .jpg:

 
try 
        { 
            // classe per la gestione delle directory 
            DirectoryInfo dir = new DirectoryInfo(filePath); 
 
            int numFiles = dir.GetFiles("*.jpg").Length; 
 
            lblDirResult.Text = "Totale immagini caricate: " + numFiles; 
 
            // visualizzo file della cartella images  
            GridView1.DataSource = dir.GetFiles("*.jpg"); 
            GridView1.DataBind(); 
        } 


A questo punto dovrei inserire una checkbox con pulsante in GridView, per dare la possibilità all'utente di eliminare il file selezionato.
Potresti farmi capire come posso fare. Grazie Daniele.
ti basta mettere un pulsante, in un template field.
più o meno così:

<asp:TemplateField>
<ItemTemplate>
<asp:button runat="server" CommandName="DeleteFile"
CommandArgument='<%#Container.DataItem.ToString()%>' onClick="DeleteFile" /> </ItemTemplate>
</asp:TemplateField>

nell'event handler DeleteFile leggi la proprietà CommandArgument del sender ed elimini il singolo file. se vuoi fare una checkbox è simile, però un pelo più complesso perchè devi scorrere la GridView al submit per capire quali sono le righe selezionate.
.

Daniele Bochicchio (ASPItalia.com)
I libri su HTML5, WP7, ASP.NET 4.0, VB 2010, C# 4, Entity Framework
Senior Software Architect @ 5DLabs.it
2.841 messaggi dal 28 gennaio 2003
io userei un checkbox per selezionare gli elementi da eliminare

Per esempio, in un ListView, metto

<input name="check_delete" type="checkbox" value="<%#Eval("id")%>" />

e un elemento server esterno alla griglia per cancellare gli elementi selezionati

gli elementi selezionati si recuperano nel modo tradizionale,

Request.Form(nome)

Pietro
59 messaggi dal 27 ottobre 2009
Ciao Daniele,
ho cercato di implementare il tuo codice. Con onClick mi dava errore, quindi ho provato con OnCommand:

aspx
 
   <asp:TemplateField> 
                                    <ItemTemplate> 
                                        <asp:Button ID="Button2" runat="server" CommandName="DeleteFile" CommandArgument='<%#Container.DataItem.ToString()%>' 
                                             OnCommand="DeleteFile" /> 
                                    </ItemTemplate> 
                                </asp:TemplateField> 
 


poi in code behind

 
 
    protected void DeleteFile(object sender, CommandEventArgs e) 
    { 
        string filePath = HttpContext.Current.Request.PhysicalApplicationPath + "public/gallery/"+ e.CommandArgument; 
 
        
            File.Delete(filePath); 
           
} 
       



ma mi da sempre errore. Cosa sto sbagliando?

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.
In primo piano

I più letti di oggi

Media
In evidenza
MISC