using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using SteamWare; public partial class mod_filtro : ApplicationUserControl { protected string _css; protected ObjectDataSource _ods; protected string _valore { get { return memLayer.ML.StringSessionObj(string.Format("valFiltro_{0}", this.ID)); } set { memLayer.ML.setSessionVal(string.Format("valFiltro_{0}", this.ID), value, false); } } /// /// calcola se ci sia in sessione il valore del filtro /// protected bool valueInSession { get { bool answ = false; try { memLayer.ML.isInSessionObject(string.Format("valFiltro_{0}", this.ID)); } catch { } return answ; } } protected bool _changeCheckEnabled = true; protected bool _changeCheckVisible = true; protected bool _changeSelEnabled = true; protected string _where = ""; protected string _showFiltered { get { return memLayer.ML.StringSessionObj(string.Format("_showFiltered_{0}", this.ID)); } set { memLayer.ML.setSessionVal(string.Format("_showFiltered_{0}", this.ID), value); traduciObj(); } } protected string _showAll { get { return memLayer.ML.StringSessionObj(string.Format("_showAll_{0}", this.ID)); } set { memLayer.ML.setSessionVal(string.Format("_showAll_{0}", this.ID), value); traduciObj(); } } protected override void OnInit(EventArgs e) { base.OnInit(e); if (!Page.IsPostBack) { if (string.IsNullOrEmpty(_showFiltered)) _showFiltered = "mostraSoloSelez"; if (string.IsNullOrEmpty(_showAll)) _showAll = "mostraTutti"; } } /// /// traduzione oggetti /// protected override void traduciObj() { if (_changeCheckVisible) { if (!chkFilt.Checked) { chkFilt.Text = traduci(_showFiltered); } else { chkFilt.Text = traduci(_showAll); } } } /// /// get/set messaggio di attivazione filtraggio /// public string filterChekText { get { return _showFiltered; } set { _showFiltered = value; } } /// /// get/set messaggio di disattivazione filtraggio /// public string filterUnchekText { get { return _showAll; } set { _showAll = value; } } protected void chkFilt_CheckedChanged(object sender, EventArgs e) { // cambio modalità visualizzazione del filtro... dlFilt.Visible = !dlFilt.Visible; raiseSelEvent(); } protected void raiseSelEvent() { if (!dlFilt.Visible) { memLayer.ML.setSessionVal(string.Format("valFiltro_{0}", this.ID), "", false); } else { _valore = dlFilt.SelectedValue; } if (eh_selValore != null) { eh_selValore(this, new EventArgs()); } } protected void updateChk() { chkFilt.Enabled = _changeCheckEnabled; if (!_changeCheckEnabled) { chkFilt.Checked = true; dlFilt.Visible = true; } } protected void updateSel() { dlFilt.Enabled = _changeSelEnabled; } protected void updateChkLbl() { chkFilt.Visible = _changeCheckVisible; } protected override void bindControlli() { updateChk(); fixValore(); where.Text = _where; traduciObj(); } protected SteamWare.tipoVistaMod _modo = SteamWare.tipoVistaMod.editing; protected void dlFilt_SelectedIndexChanged(object sender, EventArgs e) { raiseSelEvent(); } /// /// condizione where per ridurre elementi mostrati in selettore /// public string condizione { get { return _where; } set { _where = value; } } /// /// fornisce il valore scelto o "*" se nulla selezionato /// public string valore { get { string answ = "*"; if (chkFilt.Checked) { answ = dlFilt.SelectedValue; } return answ; } set { _valore = value; //fixValore(); } } /// /// primo valore di una chiave multicampo /// public string val_1 { get { string answ = ""; if (chkFilt.Checked) { try { string[] _dataKey = dlFilt.SelectedValue.Split('#'); answ = _dataKey[0]; } catch { } } else { answ = "*"; } return answ; } } /// /// secondo valore di una chiave multicampo /// public string val_2 { get { string answ = ""; if (chkFilt.Checked) { try { string[] _dataKey = dlFilt.SelectedValue.Split('#'); answ = _dataKey[1]; } catch { } } else { answ = "*"; } return answ; } } /// /// fornisce il valore scelto o "0" se nulla selezionato o non valido /// public int valoreInt { get { int answ = -1; try { if (chkFilt.Checked) { answ = Convert.ToInt32(dlFilt.SelectedValue); } } catch { } return answ; } } /// /// sistema visualizzazione /// protected void fixValore() { if (_ods != null) { try { dlFilt.DataSource = _ods; dlFilt.DataBind(); if (!string.IsNullOrEmpty(_valore)) { dlFilt.SelectedValue = _valore; dlFilt.Visible = true; chkFilt.Checked = true; } } catch (Exception exc) { logger.lg.scriviLog(string.Format("Eccezione:{0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); dlFilt.SelectedIndex = 0; } } } public event EventHandler eh_selValore; /// /// determina se sia possibile (de)selezionare il check di filtraggio, altrimenti sempre attivo /// public bool changeCheckEnabled { get { return _changeCheckEnabled; } set { _changeCheckEnabled = value; updateChk(); } } /// /// determina se sia possibile modificare la selezione /// public bool changeSelEnabled { get { return _changeSelEnabled; } set { _changeSelEnabled = value; updateSel(); } } /// /// determina se sia possibile visibile il check di filtraggio /// public bool changeCheckVisible { get { return _changeCheckVisible; } set { _changeCheckVisible = value; updateChkLbl(); } } /// /// get/set della checkbox /// public bool isChecked { get { return chkFilt.Checked; } set { chkFilt.Checked = value; dlFilt.Visible = value; updateChkLbl(); } } /// /// oggetto ODS con cui popolare il selettore, VINCOLO abbia campi value(key) / label /// public ObjectDataSource ods { get { return _ods; } set { _ods = value; } } /// /// css applicato agli elementi del controllo /// public string css { get { return _css; } set { _css = value; } } /// /// resetta il controllo (un-checked) /// public void reset() { chkFilt.Checked = false; dlFilt.Visible = false; memLayer.ML.emptySessionVal(string.Format("valFiltro_{0}", this.ID)); } /// /// resetta e seleziona primo valore /// public void reselFirst() { dlFilt.DataBind(); bindControlli(); try { dlFilt.SelectedIndex = 0; } catch { } } /// /// get/set per la larghezza della combo dropdown /// public int comboWidth { get { return Convert.ToInt32(dlFilt.Width); } set { dlFilt.Width = value; } } }