using SteamWare; using System; using System.Web.UI; using System.Web.UI.WebControls; [ValidationProperty("valore")] public partial class mod_dataOra : System.Web.UI.UserControl { /// /// definisce se siano visibili e selezionabili i secondi /// protected bool _showSeconds = false; /// /// tipo selettore orario richiesto /// protected tipoSelOrario _tipoOrario; /// /// calsse css applicata ai controlli /// protected string _css; /// /// valore di riferimento... /// protected DateTime _valore; /// /// avvio pagina /// /// /// protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { traduciObj(); fixPnlVisibility(); //setupControlli(); fixCss(); } CalendarExtender1.Format = memLayer.ML.CRS("ddMMyyyy"); } /// /// traduce gli oggetti /// private void traduciObj() { lblData.Text = traduci("lblData"); lblOra.Text = traduci("lblOra"); lblMin.Text = traduci("lblMin"); lblTime.Text = traduci("lblTime"); } /// /// sistema valori default dei controlli /// 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; } } /// /// sistema visualizzazione controlli /// 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; } } /// /// sistema i css del controllo... /// 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; } } /// /// wrapper traduzione /// /// /// public string traduci(object lemma) { return user_std.UtSn.Traduci(lemma.ToString()); } /// /// scelta del tipo di selettore per ora/min/sec /// public tipoSelOrario tipoOrario { get { return _tipoOrario; } set { _tipoOrario = value; fixPnlVisibility(); } } /// /// valore del controllo /// 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(); } } } /// /// css applicato agli elementi del controllo /// public string css { get { return _css; } set { _css = value; fixCss(); } } /// /// nasconde se richiesto le label dei controlli dataOra /// public bool mostraLabel { set { lblData.Visible = value; lblMin.Visible = value; lblOra.Visible = value; lblTime.Visible = value; } } } /// /// tipo di selettore impiegato per la seleizone dell'orario /// public enum tipoSelOrario { /// /// selettore a tendina per l'ora (00 -> 23) ed i minuti/secondi (00 -> 59) /// tendina, /// /// selettore testuale con masked input /// testuale }