Files
2020-09-07 11:13:34 +02:00

446 lines
9.8 KiB
C#

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);
}
}
/// <summary>
/// calcola se ci sia in sessione il valore del filtro
/// </summary>
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";
}
}
/// <summary>
/// traduzione oggetti
/// </summary>
protected override void traduciObj()
{
if (_changeCheckVisible)
{
if (!chkFilt.Checked)
{
chkFilt.Text = traduci(_showFiltered);
}
else
{
chkFilt.Text = traduci(_showAll);
}
}
}
/// <summary>
/// get/set messaggio di attivazione filtraggio
/// </summary>
public string filterChekText
{
get
{
return _showFiltered;
}
set
{
_showFiltered = value;
}
}
/// <summary>
/// get/set messaggio di disattivazione filtraggio
/// </summary>
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();
}
/// <summary>
/// condizione where per ridurre elementi mostrati in selettore
/// </summary>
public string condizione
{
get
{
return _where;
}
set
{
_where = value;
}
}
/// <summary>
/// fornisce il valore scelto o "*" se nulla selezionato
/// </summary>
public string valore
{
get
{
string answ = "*";
if (chkFilt.Checked)
{
answ = dlFilt.SelectedValue;
}
return answ;
}
set
{
_valore = value;
//fixValore();
}
}
/// <summary>
/// primo valore di una chiave multicampo
/// </summary>
public string val_1
{
get
{
string answ = "";
if (chkFilt.Checked)
{
try
{
string[] _dataKey = dlFilt.SelectedValue.Split('#');
answ = _dataKey[0];
}
catch
{ }
}
else
{
answ = "*";
}
return answ;
}
}
/// <summary>
/// secondo valore di una chiave multicampo
/// </summary>
public string val_2
{
get
{
string answ = "";
if (chkFilt.Checked)
{
try
{
string[] _dataKey = dlFilt.SelectedValue.Split('#');
answ = _dataKey[1];
}
catch
{ }
}
else
{
answ = "*";
}
return answ;
}
}
/// <summary>
/// fornisce il valore scelto o "0" se nulla selezionato o non valido
/// </summary>
public int valoreInt
{
get
{
int answ = -1;
try
{
if (chkFilt.Checked)
{
answ = Convert.ToInt32(dlFilt.SelectedValue);
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// sistema visualizzazione
/// </summary>
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;
/// <summary>
/// determina se sia possibile (de)selezionare il check di filtraggio, altrimenti sempre attivo
/// </summary>
public bool changeCheckEnabled
{
get
{
return _changeCheckEnabled;
}
set
{
_changeCheckEnabled = value;
updateChk();
}
}
/// <summary>
/// determina se sia possibile modificare la selezione
/// </summary>
public bool changeSelEnabled
{
get
{
return _changeSelEnabled;
}
set
{
_changeSelEnabled = value;
updateSel();
}
}
/// <summary>
/// determina se sia possibile visibile il check di filtraggio
/// </summary>
public bool changeCheckVisible
{
get
{
return _changeCheckVisible;
}
set
{
_changeCheckVisible = value;
updateChkLbl();
}
}
/// <summary>
/// get/set della checkbox
/// </summary>
public bool isChecked
{
get
{
return chkFilt.Checked;
}
set
{
chkFilt.Checked = value;
dlFilt.Visible = value;
updateChkLbl();
}
}
/// <summary>
/// oggetto ODS con cui popolare il selettore, VINCOLO abbia campi value(key) / label
/// </summary>
public ObjectDataSource ods
{
get
{
return _ods;
}
set
{
_ods = value;
}
}
/// <summary>
/// css applicato agli elementi del controllo
/// </summary>
public string css
{
get
{
return _css;
}
set
{
_css = value;
}
}
/// <summary>
/// resetta il controllo (un-checked)
/// </summary>
public void reset()
{
chkFilt.Checked = false;
dlFilt.Visible = false;
memLayer.ML.emptySessionVal(string.Format("valFiltro_{0}", this.ID));
}
/// <summary>
/// resetta e seleziona primo valore
/// </summary>
public void reselFirst()
{
dlFilt.DataBind();
bindControlli();
try
{
dlFilt.SelectedIndex = 0;
}
catch
{ }
}
/// <summary>
/// get/set per la larghezza della combo dropdown
/// </summary>
public int comboWidth
{
get
{
return Convert.ToInt32(dlFilt.Width);
}
set
{
dlFilt.Width = value;
}
}
}