Si trova in un metodo, che viene richiamato dall'evento Button_Click...
È così difficile da capire?
using System;
using System.Runtime.InteropServices;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;
using Microsoft.SharePoint.WebPartPages;
using System.Security.Principal;
using System.Web.Security;
namespace Tools
{
[Guid("978f2abe-9efe-4d39-b2a4-15afb5352b81")]
public class BachecaElettronica : System.Web.UI.WebControls.WebParts.WebPart
{
public BachecaElettronica()
{
}
#region DICHIARAZIONE
//stringa di connessione al database
private string stringaDiConnessione = "Data Source=sgv003;Initial Catalog=Tools;Integrated Security=True";
//percorso allegato
protected string percorsoAllegato = string.Empty;
//utente autenticato
protected string Utente = string.Empty;
//label
protected Label lblAnnuncio = new Label();
protected Label lblUploadFile = new Label();
//textbox
protected TextBox txtAnnuncio = new TextBox();
//uploadfile
protected FileUpload UploadFile = new FileUpload();
//botton
protected Button btnConferma = new Button();
protected Button btnAnnulla = new Button();
[WebBrowsable(true),
WebDisplayName("Stringa di Connessione"),
WebDescription("Inserire Stringa di Connessione"),
Personalizable(PersonalizationScope.User)]
public string CNString //per modificare la stringa di connessione tramite web
{
get { return this.stringaDiConnessione; }
set { this.stringaDiConnessione = value; }
}
#endregion DICHIARAZIONE
#region INIZIALIZZAZIONE
protected override void CreateChildControls()
{
//lblAnnuncio
lblAnnuncio.ID = "lblAnnuncio";
lblAnnuncio.Width = 500;
lblAnnuncio.Text = "Inserire qui sotto il testo dell'annuncio";
this.Controls.Add(lblAnnuncio);
//txtAnnuncio
txtAnnuncio.ID = "txtAnnuncio";
txtAnnuncio.Width = Unit.Pixel(600);
txtAnnuncio.Height = Unit.Pixel(250);
txtAnnuncio.TextMode = TextBoxMode.MultiLine;
this.Controls.Add(txtAnnuncio);
//lblUploadFile
lblUploadFile.ID = "lblUploadFile";
lblUploadFile.Width = 300;
lblUploadFile.Text = "Eventualmente caricare un allegato";
this.Controls.Add(lblUploadFile);
//UploadFile
UploadFile.ID = "UploadFile";
UploadFile.Width = 300;
this.Controls.Add(UploadFile);
//button
btnConferma.Text = "Salva annuncio";
btnConferma.Click += new EventHandler(btnConferma_Click);
//button
btnAnnulla.Text = "Annulla";
btnAnnulla.Click += new EventHandler(btnAnnulla_Click);
this.Controls.Add(btnAnnulla);
}
#endregion INIZIALIZZAZIONE
protected override void OnLoad(System.EventArgs e)
{
base.OnLoad(e);
} //non utilizzato ancora
#region CODICEHTML
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
writer.Write("<center><table><tr><td height=50></td></tr><tr><td><h2 style=\"text-align=center; color=gray\">Inserimento annuncio in Bacheca</h2></td></tr><tr><td>");
lblAnnuncio.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("<tr><td>");
txtAnnuncio.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("<tr><td>");
lblUploadFile.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("<tr><td>");
UploadFile.RenderControl(writer);
writer.Write("</td></tr>");
writer.Write("<tr><td>");
btnConferma.RenderControl(writer);
writer.Write("    ");
btnAnnulla.RenderControl(writer);
writer.Write("</td></tr></table></center>");
}
#endregion CODICEHTML
#region EVENTOUPLOAD
protected void CaricaAllegato()
{
//Se FU contiene un file.
if (UploadFile.HasFile)
{
//Definisco l'indirizzo della cartella dove le immagini verranno salvate
string cartellaDestinazione = "~/immagini/";
//Definisco l'indirizzo della cartella più il nome del file che carico.
//Tramite il parametro FileName ricavo il nome del file che sto caricando.
string nomeCartellaPiuNomeFile = cartellaDestinazione + UploadFile.FileName;
//Carico e salvo il file tramite il metodo SaveAs. Come parametri gli passo
//nomeCartellaPiuNomeFile all'interno di Server.MapPath() che mi ritorna
//la posizione della mia root sul server.
UploadFile.SaveAs(nomeCartellaPiuNomeFile); //MapPathSecure
//Passo il nome del file che sto caricando in maniera tale
//che cambia il valore che verrà inserito nella query.
percorsoAllegato = cartellaDestinazione + UploadFile.FileName;
//inserisco l'utente
IPrincipal user = this.Context.User;
Utente = user.Identity.Name;
}
else
{
percorsoAllegato = "Non ci sono allegati per questo annuncio";
//inserisco l'utente
IPrincipal user = this.Context.User;
Utente = user.Identity.Name;
}
}
#endregion EVENTOUPLOAD
protected void InserisciAnnuncio(string testo, string utente, string allegato)
{
SqlConnection connessione = new SqlConnection(stringaDiConnessione);
connessione.Open();
string strQuery = "INSERT INTO Annunci (annuncio_data, annuncio_testo, annuncio_utente, annuncio_allegato, annuncio_stato) VALUES ('GETDATE()', '" + testo + "','" + utente + "','" + allegato + "', 'Non scaduto')";
SqlCommand commando = new SqlCommand(strQuery, connessione);
commando.ExecuteScalar();
connessione.Close();
}
#region EVENTIBOTTONI
protected void btnConferma_Click(object sender, EventArgs e)
{
CaricaAllegato();
InserisciAnnuncio(txtAnnuncio.Text, Utente, percorsoAllegato);
}
protected void btnAnnulla_Click(object sender, EventArgs e)
{
}
#endregion EVENTIBOTTONI
}
}
Proverò come mi hai suggerito. farò sapere.
Comunque il codice funziona se lo uso in una pagina .apsx con codice c# in file separato!
Mentre nella web part mi dà errore, e solo su Server.MapPath!
Non riconosce Server! E neanche Intellisense non lo trova.
Modificato da sharepointhelp il 19 settembre 2008 14.54 -