lukaone ha scritto:
Salve ...
ho questo problema..
ho una label un una gridview così:
<asp:TemplateField HeaderText="FOTO" SortExpression="ID_Prodotti">
<ItemTemplate>
<asp:Label ID="LblFile" runat="server" Visible="false" Text='<%# Eval("foto_prodotto") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
e devo recuperare il suo valore per eliminare il file.
Ho creato una sub cher si attiva al valore di un click:
Sub cancella(ByVal sender As Object, ByVal e As System.EventArgs)
Dim nomefile As String nomefile = CType(GrdProdotti.SelectedRow.FindControl("LblFile"), Label).Text
Dim percorso As String = Server.MapPath(" /public/" & nomefile & "")
File.Delete(percorso)
End Sub
ma continua a generarmi un errore del tipo:
Riferimento a un oggetto non impostato su un'istanza di oggetto.
Qualcuno può chiarirmi questa cosa?
grazie
Ciao, io uso un metodo un po diverso (e tra l'altro in c#) che è questo:
// Inizio del gestore per la cancellazione dei file fisici attraverso il gridview:
protected void GridView2_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "Elimina") //Con questo comando passo l'indice della riga selezionata
{
// Tramite il DataKey ricavo il codice univoco del record da cancellare
int index = Convert.ToInt32(e.CommandArgument);
string NomeFile = GridView2.DataKeys[index].Values["PercorsoFile"].ToString();
GridViewRow row = GridView2.Rows[index];
// Cancello fisicamente il Pfd
File.Delete(Server.MapPath(NomeFile));
// Cancello il record selezionato
GridView2.DeleteRow(index);
GridView2.DataBind();
}
}
Ovvio che nel gridview devi referenziare il gestore:
OnRowCommand="GridView2_RowCommand"
e specificare il datakeynames (i campi del db interessati)
e in ultima crearti il bottone per la cancellazione (quindi devi settare a false quello creato di default "ShowDeleteButton="false")
<asp:ButtonField CommandName="Elimina" Text="elimina" />
Spero ti sia tutto piu chiaro adesso!
Modificato da ricardo78 il 28 febbraio 2011 15.43 -