2025-04-15 12:10:19 +02:00

247 lines
8.0 KiB
C#

using System;
using System.Data;
using System.Collections;
using System.ComponentModel;
using System.Security.Permissions;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
[assembly: TagPrefix("CustomCompositeControl", "Custom")]
namespace CustomCompositeControl
{
[AspNetHostingPermission(SecurityAction.Demand,
Level = AspNetHostingPermissionLevel.Minimal)]
[AspNetHostingPermission(SecurityAction.InheritanceDemand,
Level = AspNetHostingPermissionLevel.Minimal),
DefaultProperty("DataTextField"),
ToolboxData("<{0}:TreeViewCompositeControl runat=\"server\"> </{0}:TreeViewCompositeControl>")]
public class TreeViewCompositeControl : DataBoundControl
{
string _idTreeView;
string _cssclass;
TreeViewReport _treeviewcontrolstate;
public TreeViewCompositeControl()
{
_idTreeView = "MyTreeView1";
_cssclass = "stateTitle";
}
public string DataTextField
{
get
{
object o = ViewState["DataTextField"];
return ((o == null) ? string.Empty : (string)o);
}
set
{
ViewState["DataTextField"] = value;
if (Initialized)
{
OnDataPropertyChanged();
}
}
}
public string IDTreeView
{
get
{
return _idTreeView;
}
set
{
_idTreeView = value;
}
}
public ArrayList RetrievedDataPostBack
{
get
{
ArrayList o = (ArrayList)ViewState["RetrievedDataPostBack"];
return o;
}
set
{
ViewState["RetrievedDataPostBack"] = value;
}
}
protected override void PerformSelect()
{
// Call OnDataBinding here if bound to a data source using the
// DataSource property (instead of a DataSourceID), because the
// databinding statement is evaluated before the call to GetData.
if (!IsBoundUsingDataSourceID)
{
this.OnDataBinding(EventArgs.Empty);
}
// The GetData method retrieves the DataSourceView object from
// the IDataSource associated with the data-bound control.
GetData().Select(CreateDataSourceSelectArguments(),
this.OnDataSourceViewSelectCallback);
// The PerformDataBinding method has completed.
RequiresDataBinding = false;
MarkAsDataBound();
// Raise the DataBound event.
OnDataBound(EventArgs.Empty);
}
private void OnDataSourceViewSelectCallback(IEnumerable retrievedData)
{
//IEnumerable retrievedDataPostBack = null;
// Call OnDataBinding only if it has not already been
// called in the PerformSelect method.
if (IsBoundUsingDataSourceID)
{
OnDataBinding(EventArgs.Empty);
}
// The PerformDataBinding method binds the data in the
// retrievedData collection to elements of the data-bound control.
//if (RetrievedDataPostBack == null)
//{
RetrievedDataPostBack = setRetrievedDataPostBack(retrievedData);
//retrievedDataPostBack = RetrievedDataPostBack;
//}
//else
//{
// retrievedDataPostBack = RetrievedDataPostBack;
//}
PerformDataBinding(RetrievedDataPostBack);
}
protected override void PerformDataBinding(IEnumerable retrievedData)
{
base.PerformDataBinding(retrievedData);
// Verify data exists.
if (retrievedData != null)
{
TreeViewReport treeview = new TreeViewReport(_idTreeView);
treeview.RootNodeStyle.CssClass = _cssclass;
treeview.ShowExpandCollapse = false;
treeview.ID = _idTreeView;
treeview.CreateTreeView(retrievedData);
//this.TreeViewControlState = treeview;
this.Controls.Add(treeview);
}
}
private ArrayList setRetrievedDataPostBack(IEnumerable retrievedData)
{
CustomDataItem dataItem;
ArrayList array = new ArrayList();
foreach (DataRowView rvw in ((DataView)retrievedData))
{
dataItem = new CustomDataItem();
if (rvw["Descrizione"] != DBNull.Value)
dataItem.Descrizione = rvw["Descrizione"].ToString();
if (rvw["IdSezione"] != DBNull.Value)
dataItem.IdSezione = rvw["IdSezione"].ToString();
if (rvw["InternalSectionCode"] != DBNull.Value)
dataItem.InternalSectionCode = rvw["InternalSectionCode"].ToString();
if (rvw["IsDefault"] != DBNull.Value)
dataItem.IsDefault = Convert.ToBoolean(rvw["IsDefault"]);
if (rvw["IsMandatory"] == DBNull.Value)
dataItem.IsMandatory = false;
else
dataItem.IsMandatory = Convert.ToBoolean(rvw["IsMandatory"]);
if (rvw["Livello"] != DBNull.Value)
dataItem.Livello = Convert.ToInt32(rvw["Livello"]);
if (rvw["NomeControlloGruppo"] != DBNull.Value)
dataItem.NomeControlloGruppo = rvw["NomeControlloGruppo"].ToString();
if (rvw["TpSezione"] != DBNull.Value)
dataItem.TpSezione = Convert.ToInt32(rvw["TpSezione"]);
// Sezione Personalizzata
if (rvw["SezionePers"] != DBNull.Value)
dataItem.SezionePersonalizzata = Convert.ToBoolean(rvw["SezionePers"]);
// Sezione Immagine
if (rvw["NomeImmagine"] == DBNull.Value)
dataItem.Image = "";
else
dataItem.Image = rvw["NomeImmagine"].ToString();
if (rvw["CSSClass"] == DBNull.Value)
dataItem.CSSClassName = "";
else
dataItem.CSSClassName = rvw["CSSClass"].ToString();
// NoParentBehaviour
if (rvw["NoParentBehaviour"] != DBNull.Value)
dataItem.NoParentBehaviour = Convert.ToBoolean(rvw["NoParentBehaviour"]);
// NoParentBehaviour
if (rvw["NoCheckedByParent"] != DBNull.Value)
dataItem.NoCheckedByParent = Convert.ToInt16(rvw["NoCheckedByParent"]);
// IsSectionPrinting
if (rvw["IsSectionPrinting"] != DBNull.Value)
dataItem.IsSectionPrinting = Convert.ToBoolean(rvw["IsSectionPrinting"]);
// Tipo controllo
dataItem.TipoControllo = getTipoControllo(dataItem.TpSezione);
array.Add(dataItem);
}
return array;
}
private TipoControllo getTipoControllo(int TpSezione)
{
TipoControllo tpc;
switch (TpSezione)
{
case 0:
tpc = TipoControllo.MenuRoot;
break;
case 1:
tpc = TipoControllo.CheckBox;
break;
case 2:
tpc = TipoControllo.RadioButton;
break;
case 3:
tpc = TipoControllo.Label;
break;
default:
tpc = TipoControllo.CheckBox;
break;
}
return tpc;
}
}
}