Pagina GestioneUtenti.aspx.cs:
------------------------------------------------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.IO;

namespace GestioneTabella
{
public partial class GestioneUtenti : System.Web.UI.Page
{
//################################################## ################################################## #####################
// CLASSE
//################################################## ################################################## #####################


//Inizializzo le variabili del Conf e le librerie che si trovano nel sile /Lib/Library.cs
LibraryConf LibraryConf = new LibraryConf();
Library Library = new Library();




protected void Page_Load(object sender, EventArgs e)
{
String Parametro = Request["p"];

//Inserimento. Visualizzo la Details view in modalita inserimento e nascondo la lista
if (Parametro == "ins")
{
//GridView1.SelectedIndex = -1;
GridView1.Visible = false;
DetailsView1.DefaultMode = DetailsViewMode.Insert;
}


}


//================================================== ================================================== ============
// GRIDVIEW
//================================================== ================================================== ============
protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
{

//-------------------------------------------------------------------
//Prelevo i campi del record selezionato dal GridView

//Campo chiave del gridview
String Codice = e.Keys["UTCodice"].ToString();
//...oppure
//String Codice=GridView1.Rows[e.RowIndex].Cells[0].Text

//Campo non chiave primaria
//String Username = e.Values["UTUserName"].ToString();
//-------------------------------------------------------------------



//-------------------------------------------------------------------
//Cancello il/i file/s allegato/i leggendo i files da cancellare dal database
Library.LIBCancellaAllegatoDatabase("Utenti", "UTCodice", Codice, "UTImmagine", Server.MapPath(LibraryConf.CONFUrlAllegati));

}

protected void GridView1_RowDeleted(object sender, GridViewDeletedEventArgs e)
{
//Nascondo la DetailsView dopo la cancellazione della GridView
DetailsView1.Visible = false;
}

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
//Visualizzo la DetailsView dopo la selezione della GridView
DetailsView1.Visible = true;
//Nascondo la GridView in fase di modifica di un record (altrimenti vedrei la lista sopra, e la scheda modificabile sotto)
GridView1.Visible = false;
}

protected void GridView1_PageIndexChanged(object sender, EventArgs e)
{
//Azzero il valore selezionato della GridView dopo il salto pagina
GridView1.SelectedIndex = -1;
}
//================================================== ================================================== ============
// GRIDVIEW
//================================================== ================================================== ============










//================================================== ================================================== ============
// DETAILSVIEW
//================================================== ================================================== ============
protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs e)
{

//Se la username è già esistente do errore
if (Library.LIBEsisteRecordDatabase("Utenti", "UTUserName", e.Values["UTUserName"].ToString(), 1) == true)
{
Response.Write("Username già esistente. Tornare indietro e cambiarla.");
Response.End();
}


//Cripto la password prima di salvarla e la memorizzo nel campo della DetailView
e.Values["UTPassword"] = Library.LIBCripta(e.Values["UTPassword"].ToString());


//Carico il nuovo allegato
FileUpload FileAllegato = DetailsView1.FindControl("FileAllegato") as FileUpload;
if (FileAllegato.HasFile)
{
//Salvataggio file
String NomeFile = DateTime.Now.ToString("yyyyMMddhhmmss") + "-" + FileAllegato.FileName;
FileAllegato.SaveAs(Server.MapPath(LibraryConf.CON FUrlAllegati) + NomeFile);

//Aggiorno il campo della DetailsView per poterlo salvare nel database, memorizzando il nome del nuovo allegato
e.Values["UTImmagine"] = NomeFile;
}
}

protected void DetailsView1_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
//Aggiorno la GridView dopo l'inserimento della DetailsView
GridView1.Visible = true;
GridView1.DataBind();

//Reindirizzo alla lista
Response.Redirect("http://" + Request.ServerVariables["HTTP_HOST"] + Request.ServerVariables["SCRIPT_NAME"]);
}

protected void DetailsView1_ItemUpdating(object sender, DetailsViewUpdateEventArgs e)
{
//Se cambio la username ed è già esistente do errore
if (e.OldValues["UTUserName"].ToString() != e.NewValues["UTUserName"].ToString() && Library.LIBEsisteRecordDatabase("Utenti", "UTUserName", e.NewValues["UTUserName"].ToString(), 1) == true)
{
Response.Write("Username già esistente. Tornare indietro e cambiarla.");
Response.End();
}

//-------------------------------------------------------------------
//Prelevo i campi del record selezionato dal GridView

//Campo chiave del gridview
String Codice = e.Keys["UTCodice"].ToString();
//...oppure
//String Codice=GridView1.Rows[e.RowIndex].Cells[0].Text

//Campo non chiave primaria
//String Username = e.Values["UTUserName"].ToString();
//-------------------------------------------------------------------


//Aggiorno il campo della DetailsView per poterlo salvare nel database prendendo il nome del vecchio allegato
e.NewValues["UTImmagine"] = Library.LIBContenutoCampoDatabase("Utenti", "UTCodice", Codice, "UTImmagine");

//Cripto la password prima di salvarla e la memorizzo nel campo della DetailView
e.NewValues["UTPassword"] = Library.LIBCripta(e.NewValues["UTPassword"].ToString());


//Se ho selezionato il checkbox cancello l'allegato
CheckBox CancellaAllegato = DetailsView1.FindControl("CancellaAllegato") as CheckBox;
if (CancellaAllegato.Checked == true)
{
//Cancello il/i file/s allegato/i vecchi leggendo i files da cancellare dal database
Library.LIBCancellaAllegatoDatabase("Utenti", "UTCodice", Codice, "UTImmagine", Server.MapPath(LibraryConf.CONFUrlAllegati));
//Aggiorno il campo della DetailsView per poterlo salvare nel database prendendo il nome del vecchio allegato
e.NewValues["UTImmagine"] = "";
}

//Cancello allegato vecchio, carico il nuovo
FileUpload FileAllegato = DetailsView1.FindControl("FileAllegato") as FileUpload;
if (FileAllegato.HasFile)
{
//Cancello il/i file/s allegato/i vecchi leggendo i files da cancellare dal database
Library.LIBCancellaAllegatoDatabase("Utenti", "UTCodice", Codice, "UTImmagine", Server.MapPath(LibraryConf.CONFUrlAllegati));

//Salvataggio file nuovo
String NomeFile = DateTime.Now.ToString("yyyyMMddhhmmss") + "-" + FileAllegato.FileName;
FileAllegato.SaveAs(Server.MapPath(LibraryConf.CON FUrlAllegati) + NomeFile);

//Aggiorno il campo della DetailsView per poterlo salvare nel database, memorizzando il nome del nuovo allegato
e.NewValues["UTImmagine"] = NomeFile;
}

}

protected void DetailsView1_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e)
{
//Aggiorno la GridView dopo l'aggiornamento della DetailsView
GridView1.Visible = true;
GridView1.DataBind();
GridView1.SelectedIndex = -1;
}

protected void DetailsView1_ItemDeleted(object sender, DetailsViewDeletedEventArgs e)
{
//Aggiorno la GridView dopo l'eliminazione della DetailsView
GridView1.Visible = true;
GridView1.DataBind();
GridView1.SelectedIndex = -1;
}

protected void DetailsView1_DataBound(object sender, EventArgs e)
{
//Una volta che sono stati caricati i dati nella DetailsView, solo se sono in fase di modifica..
//Leggo il campo della password, lo decripto e lo visualizzo decriptato
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
try
{
//DeCripto la password prima di visualizzarla nel campo della DetailView
TextBox Pass = DetailsView1.FindControl("UTPassword") as TextBox;
String PassCriptata = Pass.Text;
String PassChiara = Library.LIBDecripta(PassCriptata.ToString());
Pass.Text = PassChiara;
}
catch (Exception ex)
{
}
}

}

//================================================== ================================================== ============
// DETAILSVIEW
//================================================== ================================================== ============




//================================================== ================================================== ============
// CALENDARIO
//================================================== ================================================== ============
protected void CalendarDataInizio_SelectionChanged(object sender, EventArgs e)
{
//Inserisco nel campo data, la data scelta nel calendario
TextBox tb;
tb = DetailsView1.FindControl("UTDataInizio") as TextBox;
if (tb != null)
{
Calendar c = (Calendar)sender;

tb.Text = c.SelectedDate.ToShortDateString();
//tb.Text = c.SelectedDate.Year.ToString() + c.SelectedDate.Month.ToString("00") + c.SelectedDate.Day.ToString("00");
DetailsView1.FindControl("DivCalendarioDataInizio" ).Visible = false;
}

}

protected void CalendarDataFine_SelectionChanged(object sender, EventArgs e)
{
//Inserisco nel campo data, la data scelta nel calendario
TextBox tb;
tb = DetailsView1.FindControl("UTDataFine") as TextBox;
if (tb != null)
{
Calendar c = (Calendar)sender;

tb.Text = c.SelectedDate.ToShortDateString();
//tb.Text = c.SelectedDate.Year.ToString() + c.SelectedDate.Month.ToString("00") + c.SelectedDate.Day.ToString("00");
DetailsView1.FindControl("DivCalendarioDataFine"). Visible = false;
}

}

protected void VisualizzaCalendario(object sender, EventArgs e)
{
//Visualizza il calendario
DetailsView1.FindControl("DivCalendarioDataInizio" ).Visible = true;
DetailsView1.FindControl("DivCalendarioDataFine"). Visible = false;
}

protected void VisualizzaCalendario2(object sender, EventArgs e)
{
//Visualizza il calendario
DetailsView1.FindControl("DivCalendarioDataFine"). Visible = true;
DetailsView1.FindControl("DivCalendarioDataInizio" ).Visible = false;
}




}
}