223 lines
6.3 KiB
C#
223 lines
6.3 KiB
C#
using SteamWare;
|
|
using System;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
|
|
[ValidationProperty("valore")]
|
|
public partial class mod_dataOra : System.Web.UI.UserControl
|
|
{
|
|
/// <summary>
|
|
/// definisce se siano visibili e selezionabili i secondi
|
|
/// </summary>
|
|
protected bool _showSeconds = false;
|
|
/// <summary>
|
|
/// tipo selettore orario richiesto
|
|
/// </summary>
|
|
protected tipoSelOrario _tipoOrario;
|
|
/// <summary>
|
|
/// calsse css applicata ai controlli
|
|
/// </summary>
|
|
protected string _css;
|
|
/// <summary>
|
|
/// valore di riferimento...
|
|
/// </summary>
|
|
protected DateTime _valore;
|
|
/// <summary>
|
|
/// avvio pagina
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
if (!Page.IsPostBack)
|
|
{
|
|
traduciObj();
|
|
fixPnlVisibility();
|
|
//setupControlli();
|
|
fixCss();
|
|
}
|
|
CalendarExtender1.Format = memLayer.ML.CRS("ddMMyyyy");
|
|
}
|
|
/// <summary>
|
|
/// traduce gli oggetti
|
|
/// </summary>
|
|
private void traduciObj()
|
|
{
|
|
lblData.Text = traduci("lblData");
|
|
lblOra.Text = traduci("lblOra");
|
|
lblMin.Text = traduci("lblMin");
|
|
lblTime.Text = traduci("lblTime");
|
|
}
|
|
/// <summary>
|
|
/// sistema valori default dei controlli
|
|
/// </summary>
|
|
private void setupControlli()
|
|
{
|
|
// mostro data
|
|
txtData.Text = _valore.Date.ToString(memLayer.ML.CRS("ddMMyyyy"));
|
|
switch (_tipoOrario)
|
|
{
|
|
case tipoSelOrario.tendina:
|
|
// aggiongo valori ora e minuti...
|
|
ddlOra.Items.Clear();
|
|
ddlMin.Items.Clear();
|
|
for (int i = 0; i < 24; i++)
|
|
{
|
|
ddlOra.Items.Add(new ListItem(string.Format("{0:00}", i), i.ToString()));
|
|
}
|
|
for (int i = 0; i < 60; i++)
|
|
{
|
|
ddlMin.Items.Add(new ListItem(string.Format("{0:00}", i), i.ToString()));
|
|
}
|
|
// imposto i valori
|
|
ddlOra.SelectedValue = _valore.Hour.ToString();
|
|
ddlMin.SelectedValue = _valore.Minute.ToString();
|
|
break;
|
|
case tipoSelOrario.testuale:
|
|
txtTime.Text = string.Format("{0:HH:mm}", _valore);
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// sistema visualizzazione controlli
|
|
/// </summary>
|
|
private void fixPnlVisibility()
|
|
{
|
|
switch (_tipoOrario)
|
|
{
|
|
case tipoSelOrario.tendina:
|
|
pnlDropDown.Visible = true;
|
|
pnlText.Visible = false;
|
|
break;
|
|
case tipoSelOrario.testuale:
|
|
pnlDropDown.Visible = false;
|
|
pnlText.Visible = true;
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// sistema i css del controllo...
|
|
/// </summary>
|
|
private void fixCss()
|
|
{
|
|
txtData.CssClass = _css;
|
|
switch (_tipoOrario)
|
|
{
|
|
case tipoSelOrario.tendina:
|
|
ddlOra.CssClass = _css;
|
|
ddlMin.CssClass = _css;
|
|
break;
|
|
case tipoSelOrario.testuale:
|
|
txtTime.CssClass = _css;
|
|
break;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// wrapper traduzione
|
|
/// </summary>
|
|
/// <param name="lemma"></param>
|
|
/// <returns></returns>
|
|
public string traduci(object lemma)
|
|
{
|
|
return user_std.UtSn.Traduci(lemma.ToString());
|
|
}
|
|
/// <summary>
|
|
/// scelta del tipo di selettore per ora/min/sec
|
|
/// </summary>
|
|
public tipoSelOrario tipoOrario
|
|
{
|
|
get
|
|
{
|
|
return _tipoOrario;
|
|
}
|
|
set
|
|
{
|
|
_tipoOrario = value;
|
|
fixPnlVisibility();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// valore del controllo
|
|
/// </summary>
|
|
public DateTime valore
|
|
{
|
|
get
|
|
{
|
|
int ora = 0;
|
|
int min = 0;
|
|
switch (_tipoOrario)
|
|
{
|
|
case tipoSelOrario.tendina:
|
|
ora = Convert.ToInt32(ddlOra.SelectedValue);
|
|
min = Convert.ToInt32(ddlMin.SelectedValue);
|
|
break;
|
|
case tipoSelOrario.testuale:
|
|
ora = Convert.ToDateTime(txtTime.Text).Hour;
|
|
min = Convert.ToDateTime(txtTime.Text).Minute;
|
|
break;
|
|
}
|
|
|
|
DateTime valore = WebGimUtils.convDate(txtData.Text, memLayer.ML.CRS("ddMMyyyy"), memLayer.ML.CRS("culture"));
|
|
#if false
|
|
string formato = memLayer.ML.CRS("ddMMyyyy");
|
|
DateTime valore;
|
|
CultureInfo culture = new CultureInfo(memLayer.ML.CRS("culture"));
|
|
//logger.lg.scriviLog(string.Format("Valore txt:{1}{0}", Environment.NewLine, txtData.Text), tipoLog.INFO);
|
|
DateTime.TryParseExact(txtData.Text, formato, culture, DateTimeStyles.None, out valore);
|
|
//logger.lg.scriviLog(string.Format("Valore txt:{1}{0}Valore conv:{2}", Environment.NewLine, txtData.Text, valore), tipoLog.INFO);
|
|
#endif
|
|
DateTime answ = valore.AddHours(ora).AddMinutes(min);
|
|
return answ;
|
|
}
|
|
set
|
|
{
|
|
_valore = value;
|
|
if (ddlOra.SelectedValue == "")
|
|
{
|
|
setupControlli();
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// css applicato agli elementi del controllo
|
|
/// </summary>
|
|
public string css
|
|
{
|
|
get
|
|
{
|
|
return _css;
|
|
}
|
|
set
|
|
{
|
|
_css = value;
|
|
fixCss();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// nasconde se richiesto le label dei controlli dataOra
|
|
/// </summary>
|
|
public bool mostraLabel
|
|
{
|
|
set
|
|
{
|
|
lblData.Visible = value;
|
|
lblMin.Visible = value;
|
|
lblOra.Visible = value;
|
|
lblTime.Visible = value;
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// tipo di selettore impiegato per la seleizone dell'orario
|
|
/// </summary>
|
|
public enum tipoSelOrario
|
|
{
|
|
/// <summary>
|
|
/// selettore a tendina per l'ora (00 -> 23) ed i minuti/secondi (00 -> 59)
|
|
/// </summary>
|
|
tendina,
|
|
/// <summary>
|
|
/// selettore testuale con masked input
|
|
/// </summary>
|
|
testuale
|
|
} |