Salvataggio file upload

lunedì 18 maggio 2009 - 18.31

dandi.box Profilo | Junior Member

Ciao a tutti, secondo voi cosa sbaglio in questo codice per il salvataggio del DB e sul server di un file


ottengo un errore qui

SqlDataSourceAllegati.DataBind();

oggetto inesistente, quindi il mio problema è nel recupeare il DataSource per fare il bind

cosa devo cambiare?

Grazie





<FIELDSET style="background-color: #e1fff2"><LEGEND>Allegati</LEGEND>

<asp:SqlDataSource id="SqlDataSourceAllegati" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" DeleteCommand="DELETE FROM [OrdiniAllegati] WHERE [PK_idOrdineAllegato] = @PK_idOrdineAllegato" SelectCommand="SELECT OrdiniAllegati.* FROM OrdiniAllegati WHERE (OrdiniAllegati.FK_idOrdineFornitore = @FK_idOrdineFornitore)" InsertCommand="INSERT INTO OrdiniAllegati(FK_idOrdineFornitore, NomeFile, Descrizione) VALUES (@FK_idOrdineFornitore, @NomeFile, @Descrizione)" UpdateCommand="UPDATE OrdiniAllegati SET NomeFile = @NomeFile, Descrizione = @Descrizione WHERE (PK_idOrdineAllegato = @PK_idOrdineAllegato)">
<DeleteParameters>
<asp:Parameter Name="PK_idOrdineAllegato" Type="Int32" />
</DeleteParameters>
<SelectParameters>
<asp:QueryStringParameter Name="FK_idOrdineFornitore" QueryStringField="id" Type="Int32" />
</SelectParameters>
<InsertParameters>
<asp:QueryStringParameter Name="FK_idOrdineFornitore" QueryStringField="id" Type="Int32" />
<asp:Parameter Name="NomeFile" />
<asp:Parameter Name="Descrizione" />
</InsertParameters>
<UpdateParameters>
<asp:Parameter Name="NomeFile" />
<asp:Parameter Name="Descrizione" />
<asp:Parameter Name="PK_idOrdineAllegato" />
</UpdateParameters>
</asp:SqlDataSource>

<asp:GridView id="GridViewAllegati" runat="server" DataSourceID="SqlDataSourceAllegati" DataKeyNames="PK_idOrdineAllegato" EmptyDataText="Nessuna allegato inserito" AllowPaging="True" AllowSorting="True" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField ShowHeader="False">
<EditItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="True" CommandName="Update"
Text="Salva" ValidationGroup="GridScadenze"></asp:LinkButton>
<asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName="Cancel"
Text="Annulla"></asp:LinkButton>
</EditItemTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Edit"
Text="Modifica"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>

<asp:BoundField DataField="NomeFile" HeaderText="NomeFile" SortExpression="NomeFile" ReadOnly="True" />
<asp:BoundField DataField="Descrizione" HeaderText="Descrizione" SortExpression="Descrizione" ReadOnly="True" />
<asp:TemplateField HeaderText="Elimina" ShowHeader="False">
<ItemTemplate>
<asp:ImageButton ID="ImageButton1" runat="server" CausesValidation="False" CommandName="Delete"
ImageUrl="~/images/icon-delete.gif" />
<ajaxToolkit:ConfirmButtonExtender ID="cbe" runat="server"
TargetControlID="ImageButton1"
ConfirmText="Eliminare la voce?" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


<asp:FormView id="FormViewAllegati" runat="server" DataSourceID="SqlDataSourceAllegati" DataKeyNames="PK_idOrdineAllegato" DefaultMode="Insert">

<InsertItemTemplate>

<table>

<tr>
<td>
descrizione
</td>
<td>
file
</td>
</tr>
<tr>
<td>
<asp:TextBox ID="TextBoxDescrizioneAllegato" runat="server"></asp:TextBox>
</td>
<td>
<asp:FileUpload ID="FileUpload1" runat="server" />
</td>
</tr>


</table>

<asp:LinkButton ID="InsertAllegatoButton" runat="server" OnClick="InsertAllegatoButton_Click"
Text="Inserisci"></asp:LinkButton>
</InsertItemTemplate>

</asp:FormView>

</FIELDSET>




















protected void InsertAllegatoButton_Click(object sender, EventArgs e)
{

string path = Request.PhysicalApplicationPath;
path += "documenti\\" + Request.QueryString["id"] + "\\";
Directory.CreateDirectory(path);

//Directory.CreateDirectory(filePath);
FileUpload FileUpload1 = (FileUpload)FormViewAllegati.FindControl("FileUpload1");
TextBox TextBoxDescrizioneAllegato = (TextBox)FormViewAllegati.FindControl("TextBoxDescrizioneAllegato");


// controlliamo se il controllo FileUpload1
// contiene un file da caricare
if (FileUpload1.FileName.ToString().Length > 0)
{

string nomeFile = FileUpload1.FileName;
nomeFile = nomeFile.Replace("'", " ");
path = path + TextBoxDescrizioneAllegato.Text.ToString().Replace("'", " ") + '@' + nomeFile;
FileUpload1.SaveAs(path);

SqlDataSource SqlDataSourceAllegati = (SqlDataSource)FormViewAllegati.FindControl("SqlDataSourceAllegati");
SqlDataSourceAllegati.DataBind();

GridView GridViewAllegati = (GridView)FormViewAllegati.FindControl("GridViewAllegati");
GridViewAllegati.DataBind();
}

}

rossimarko Profilo | Guru

Ciao,

se il datasource è associato alla griglia devi richiamare il databind della griglia, non del datasource
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko

squilibrio Profilo | Expert

Ma come faccio a "trovare" l'oggetto griglia nella pagina??

FindControl associato a cosa?? (utilizzando la struttura HTML postata precedentemente)

Grazie mille

rossimarko Profilo | Guru

Dovresti poter accedere al controllo semplicemente utilizzando il suo nome (GridViewAllegati)

Quando crei gli oggetti il designer di visual studio crea automaticamente delle variabili associate ai controlli (questo è valido solo per i controlli inseriti direttamente dentro alla pagina, non per sottocontrolli inseriti ad esempio nell'item template di un repeater per cui serve il findcontrol)
-----------------------------------------
Rossi Marco
http://blogs.dotnethell.it/rossimarko
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-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5