| [ToolboxData("<{0}:DepartmentTreeView runat=server></{0}:DepartmentTreeView>")] |
| public class DepartmentTreeView : CompositeControl, IPartialRenderingCompositeControl |
| { |
| private CompositionUpdatePanel _Container; |
| private TreeView _DepartmentTreeView; |
|
| public event EventHandler DepartmentIDChanged; |
|
| public Nullable<Guid> DepartmentID |
| { |
| get |
| { |
| return (Nullable<Guid>)this.ViewState["DepartmentID"]; |
| } |
|
| set |
| { |
| if ((Nullable<Guid>)this.ViewState["DepartmentID"] != value) |
| { |
| this.ViewState["DepartmentID"] = value; |
| if (value.HasValue) |
| { |
| AIO.Web.Utils.TreeViewUtils.TreeViewSelectValue(_DepartmentTreeView, value.Value.ToString()); |
| this.ViewState["DepartmentName"] = _DepartmentTreeView.SelectedNode.Text; |
| } |
| else |
| { |
| if (_DepartmentTreeView.SelectedNode != null) |
| { |
| _DepartmentTreeView.SelectedNode.Selected = false; |
| this.ViewState["DepartmentName"] = String.Empty; |
| } |
| } |
| } |
| } |
| } |
|
| public string DepartmentName |
| { |
| get |
| { |
| return (string)this.ViewState["DepartmentName"]; |
| } |
| } |
|
| public void ClearSelected() |
| { |
| if(_DepartmentTreeView.SelectedNode != null) |
| { |
| _DepartmentTreeView.SelectedNode.Selected = false; |
| } |
| } |
|
| protected void BuildTree() |
| { |
| _DepartmentTreeView.Nodes.Clear(); |
| _DepartmentTreeView.Nodes.Add(new TreeNode("Null")); |
| DataSet ds = AIO.WIT.Data.DepartmentDataObject.ReadCore(); |
| int |
| TreeNode[] Nodes = new TreeNode[Count + 1]; |
| Nullable<int>[] ParentSQNs = new Nullable<int>[Count + 1]; |
| foreach (DataRow dr in ds.Tables[0].Rows) |
| { |
| Nodes[((int)dr["DepartmentSQN"])] = new TreeNode((string)dr["DepartmentName"], ((Guid)dr["DepartmentID"]).ToString()); |
| if (dr["ParentSQN"].GetType() == typeof(DBNull)) |
| { |
| ParentSQNs[(int)dr["DepartmentSQN"]] = null; |
| } |
| else |
| { |
| ParentSQNs[(int)dr["DepartmentSQN"]] = (int)dr["ParentSQN"]; |
| } |
| } |
| for (int i = 1; i < Count + 1; i++) |
| { |
| if (ParentSQNs[i].HasValue) |
| { |
| Nodes[ParentSQNs[i].Value].ChildNodes.Add(Nodes[i]); |
| } |
| else |
| { |
| _DepartmentTreeView.Nodes.Add(Nodes[i]); |
| } |
| } |
| } |
|
| protected override void OnInit(EventArgs e) |
| { |
| base.OnInit(e); |
| } |
|
| protected override void CreateChildControls() |
| { |
| _Container = new CompositionUpdatePanel(this); |
| _Container.Mode = UpdatePanelMode.Conditional; |
| _Container.RenderMode = UpdatePanelRenderMode.Inline; |
| _Container.ID = "Container"; |
| Controls.Add(_Container); |
| _DepartmentTreeView = new TreeView(); |
| _DepartmentTreeView.ID = "DepartmentTreeView"; |
| BuildTree(); |
| _DepartmentTreeView.SelectedNodeChanged += delegate(object sender, EventArgs e) |
| { |
| if (_DepartmentTreeView.SelectedNode.Text == "Null") |
| { |
| this.ViewState["DepartmentID"] = null; |
| this.ViewState["DepartmentName"] = String.Empty; |
| } |
| else |
| { |
| this.ViewState["DepartmentID"] = new Guid(_DepartmentTreeView.SelectedNode.Value); |
| this.ViewState["DepartmentName"] = _DepartmentTreeView.SelectedNode.Text; |
| } |
| if (DepartmentIDChanged != null) |
| { |
| DepartmentIDChanged(this, new EventArgs()); |
| } |
| }; |
| _Container.Content.Controls.Add(_DepartmentTreeView); |
| } |
|
| void IPartialRenderingCompositeControl.RenderUpdatePanel(CompositionUpdatePanel updatePanel, HtmlTextWriter writer) |
| { |
| _DepartmentTreeView.RenderControl(writer); |
| } |
| } |