33 messaggi dal 08 gennaio 2014
Ciao, ho un problema con l'upload di un file caricato da un gridview. Nell' <EditItemTemplate> ho il fileUpload:


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="820px" OnRowDataBound="GridView1_RowDataBound" OnRowUpdating="GridView1_RowUpdating" OnRowUpdated="GridView1_RowUpdated" OnRowEditing="GridView1_RowEditing" DataKeyNames="oid" etc >

<Columns>
<asp:TemplateField HeaderText="Manage">
<ItemTemplate>
<asp:LinkButton ID="LkB1" runat="server" CommandName="Edit">Edit</asp:LinkButton>
</ItemTemplate>

<EditItemTemplate>
<asp:LinkButton ID="LkB2" runat="server" CommandName="Update">Update</asp:LinkButton>
</EditItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Scheda tecnica" HeaderStyle-HorizontalAlign="Center" ItemStyle-HorizontalAlign="Center">
<EditItemTemplate>
<asp:FileUpload ID="file1" runat="server" CssClass="inpFile" />
</EditItemTemplate>
</asp:TemplateField>

etc...

</Columns>
</asp:GridView>



Nel cs:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
//string id = GridView1.DataKeys[e.RowIndex].Value.ToString();

//FileUpload FileUpload1 = (FileUpload)GridView1.Rows[e.RowIndex].FindControl("file1");

// string path = FileUpload1.FileName;

// string patrewrh = FileUpload1.PostedFile.FileName;

//GridViewRow row = GridView1.Rows[e.RowIndex];
//FileUpload fileUpload = row.Cells[0].FindControl("file1") as FileUpload;

FileUpload fileUpload = (FileUpload)GridView1.FindControl("file1");


string path = fileUpload.FileName;

string patrewrh = fileUpload.PostedFile.FileName;

}


protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
{
GridView1.EditIndex = e.NewEditIndex;
CaricaGridViewMacchine();
}




Su internet ho trovato diversi esempi e li ho provati ma non funzionano, ottengo un'errore: "Riferimento a un oggetto non impostato su un'istanza di oggetto."

Ps: Ho provato anche attraverso il RowCommand ma non funziona nemmeno da lì.

Per favore aiuto


Grazie
Modificato da shozocsharp il 24 novembre 2016 13.32 -
98 messaggi dal 13 febbraio 2016
Buon pomeriggio ,
per recuperare il controllo FileUpload non puoi utilizzare il metodo FindControl direttamente sul controllo GridView: quale FileUpload vuoi tra tutte le righe?

Quindi recuperi prima l'indice della riga cui hai cliccato il bottone edit e poi effettui il metodo FindControl.

Ti scrivo un piccolo esempio:
protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        // recupero l'attuale row
        GridViewRow row = GridView1.Rows[e.RowIndex];
        // recupero il FileUpload che si trova in questo row
        FileUpload fileUpload = (FileUpload)row.FindControl("file1");
        string path = fileUpload.FileName;
        lbl.Text = path;
    }


Ciao
Paolo
33 messaggi dal 08 gennaio 2014
Grazie per la risposta. La stinga path risulta vuota. Cosa posso fare?
98 messaggi dal 13 febbraio 2016
Aggiungi un punto di interruzione alla stringa e vedi in debug se l'oggetto FileUpload è null o meno
33 messaggi dal 08 gennaio 2014
has file -> false
Posted files -> null

PostedFiles -> Count 0
Modificato da shozocsharp il 25 novembre 2016 17.42 -
33 messaggi dal 08 gennaio 2014
Può essere perché il gridview si trova all'interno di un ModalPopupExtender?

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.