318 lines
10 KiB
C#
318 lines
10 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Web;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
using WebLib;
|
|
|
|
namespace Education.Forms.組織
|
|
{
|
|
public partial class 組織圖處理 : FormBase
|
|
{
|
|
private int 組織類別Id;
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
FunctionName = "組織圖處理";
|
|
|
|
if (!IsPostBack)
|
|
ddl組織類別.DataBind();
|
|
}
|
|
|
|
protected bool CheckInput()
|
|
{
|
|
if (txtNodeText.Text.Trim().Length == 0)
|
|
{
|
|
lbError.Text = "請輸入組織名稱";
|
|
return false;
|
|
}
|
|
else
|
|
{
|
|
lbError.Text = "";
|
|
return true;
|
|
}
|
|
}
|
|
|
|
protected 組織圖 New組織圖Item(int 上層ID)
|
|
{
|
|
組織圖 result = new 組織圖();
|
|
result.上層ID = 上層ID;
|
|
result.組織類別ID = DAC.GetInt32(ddl組織類別.SelectedValue);
|
|
result.組織名稱 = txtNodeText.Text;
|
|
result.DB_CRUSR = UserId;
|
|
result.部門主管 = ddl主管.SelectedValue;
|
|
result.組織ID = Dao組織圖.InsertOne(result);
|
|
|
|
return result;
|
|
}
|
|
|
|
protected void btnAddRoot_Click(object sender, EventArgs e)
|
|
{
|
|
if (!CheckInput())
|
|
return;
|
|
|
|
組織圖 newItem = New組織圖Item(0);
|
|
TreeNode newNode = new TreeNode(txtNodeText.Text);
|
|
newNode.Value = newItem.組織ID.ToString();
|
|
|
|
TV.Nodes.Add(newNode);
|
|
newNode.Selected = true;
|
|
}
|
|
|
|
protected void btnAdd_Click(object sender, EventArgs e)
|
|
{
|
|
if (!CheckInput())
|
|
return;
|
|
|
|
if (TV.SelectedNode == null || TV.SelectedNode.Parent == null)
|
|
btnAddRoot_Click(sender, e);
|
|
else
|
|
{
|
|
組織圖 newItem = New組織圖Item(DAC.GetInt32(TV.SelectedNode.Parent.Value));
|
|
TreeNode newNode = new TreeNode(txtNodeText.Text);
|
|
newNode.Value = newItem.組織ID.ToString();
|
|
|
|
TV.SelectedNode.Parent.ChildNodes.Add(newNode);
|
|
newNode.Selected = true;
|
|
}
|
|
}
|
|
|
|
protected void btnAddDown_Click(object sender, EventArgs e)
|
|
{
|
|
if (!CheckInput())
|
|
return;
|
|
|
|
if (TV.SelectedNode == null)
|
|
btnAddRoot_Click(sender, e);
|
|
else
|
|
{
|
|
組織圖 newItem = New組織圖Item(DAC.GetInt32(TV.SelectedNode.Value));
|
|
TreeNode newNode = new TreeNode(txtNodeText.Text);
|
|
newNode.Value = newItem.組織ID.ToString();
|
|
|
|
TV.SelectedNode.ChildNodes.Add(newNode);
|
|
TV.SelectedNode.Expand();
|
|
newNode.Selected = true;
|
|
}
|
|
}
|
|
|
|
protected void btnUpdate_Click(object sender, EventArgs e)
|
|
{
|
|
if (TV.SelectedNode == null)
|
|
return;
|
|
|
|
TV.SelectedNode.Text = txtNodeText.Text;
|
|
|
|
組織圖List values = Dao組織圖.SelectOne(DAC.GetInt32(TV.SelectedNode.Value));
|
|
if (values.Count == 0)
|
|
return;
|
|
values[0].組織名稱 = txtNodeText.Text;
|
|
values[0].部門主管 = ddl主管.SelectedValue;
|
|
values[0].DB_TRUSR = UserId;
|
|
Dao組織圖.UpdateOne(values[0]);
|
|
}
|
|
|
|
protected void btnDelete_Click(object sender, EventArgs e)
|
|
{
|
|
if (TV.SelectedNode == null)
|
|
return;
|
|
|
|
if (TV.SelectedNode.ChildNodes.Count > 0)
|
|
return;
|
|
|
|
int delId = DAC.GetInt32(TV.SelectedNode.Value);
|
|
組織圖List values = Dao組織圖.SelectOne(DAC.GetInt32(TV.SelectedNode.Value));
|
|
if (values.Count == 0)
|
|
return;
|
|
Dao組織圖.DeleteOne(values[0]);
|
|
|
|
if (TV.SelectedNode.Parent == null)
|
|
{
|
|
TV.Nodes.Remove(TV.SelectedNode);
|
|
}
|
|
else
|
|
{
|
|
TV.SelectedNode.Parent.ChildNodes.Remove(TV.SelectedNode);
|
|
}
|
|
}
|
|
|
|
protected void Update排序(TreeNodeCollection nodes)
|
|
{
|
|
for (int i = 0; i < nodes.Count; i++)
|
|
{
|
|
Dao組織圖.Update排序(DAC.GetInt32(nodes[i].Value), i + 1, UserId);
|
|
}
|
|
}
|
|
|
|
protected void btnUp_Click(object sender, EventArgs e)
|
|
{
|
|
if (TV.SelectedNode == null)
|
|
return;
|
|
|
|
if (TV.SelectedNode.Parent == null)
|
|
{
|
|
TreeNode node = TV.SelectedNode;
|
|
int thisIndex = TV.Nodes.IndexOf(node);
|
|
|
|
if (thisIndex == 0)
|
|
return;
|
|
|
|
TV.Nodes.Remove(node);
|
|
TV.Nodes.AddAt(thisIndex - 1, node);
|
|
node.Selected = true;
|
|
|
|
Update排序(TV.Nodes);
|
|
}
|
|
else
|
|
{
|
|
TreeNode node = TV.SelectedNode;
|
|
TreeNode parent = node.Parent;
|
|
int thisIndex = parent.ChildNodes.IndexOf(node);
|
|
|
|
if (thisIndex == 0)
|
|
return;
|
|
|
|
parent.ChildNodes.Remove(node);
|
|
parent.ChildNodes.AddAt(thisIndex - 1, node);
|
|
node.Selected = true;
|
|
|
|
Update排序(parent.ChildNodes);
|
|
}
|
|
}
|
|
|
|
protected void btnDown_Click(object sender, EventArgs e)
|
|
{
|
|
if (TV.SelectedNode == null)
|
|
return;
|
|
|
|
if (TV.SelectedNode.Parent == null)
|
|
{
|
|
TreeNode node = TV.SelectedNode;
|
|
int thisIndex = TV.Nodes.IndexOf(node);
|
|
|
|
if (thisIndex == TV.Nodes.Count - 1)
|
|
return;
|
|
|
|
TV.Nodes.Remove(node);
|
|
TV.Nodes.AddAt(thisIndex + 1, node);
|
|
node.Selected = true;
|
|
|
|
Update排序(TV.Nodes);
|
|
}
|
|
else
|
|
{
|
|
TreeNode node = TV.SelectedNode;
|
|
TreeNode parent = node.Parent;
|
|
int thisIndex = parent.ChildNodes.IndexOf(node);
|
|
|
|
if (thisIndex == parent.ChildNodes.Count - 1)
|
|
return;
|
|
|
|
parent.ChildNodes.Remove(node);
|
|
parent.ChildNodes.AddAt(thisIndex + 1, node);
|
|
node.Selected = true;
|
|
|
|
Update排序(parent.ChildNodes);
|
|
}
|
|
}
|
|
|
|
protected void btnUpLevel_Click(object sender, EventArgs e)
|
|
{
|
|
if (TV.SelectedNode == null)
|
|
return;
|
|
|
|
if (TV.SelectedNode.Parent == null)
|
|
return;
|
|
|
|
TreeNode node = TV.SelectedNode;
|
|
TreeNode parent = node.Parent;
|
|
TreeNode parentParent = node.Parent.Parent;
|
|
|
|
if (parentParent == null)
|
|
{
|
|
parent.ChildNodes.Remove(node);
|
|
TV.Nodes.AddAt(TV.Nodes.IndexOf(parent) + 1, node);
|
|
node.Selected = true;
|
|
|
|
Dao組織圖.Update上層ID(DAC.GetInt32(node.Value), 0, UserId);
|
|
Update排序(TV.Nodes);
|
|
}
|
|
else
|
|
{
|
|
parent.ChildNodes.Remove(node);
|
|
parentParent.ChildNodes.AddAt(parentParent.ChildNodes.IndexOf(parent) + 1, node);
|
|
node.Selected = true;
|
|
|
|
Dao組織圖.Update上層ID(DAC.GetInt32(node.Value), DAC.GetInt32(parentParent.Value), UserId);
|
|
Update排序(parentParent.ChildNodes);
|
|
}
|
|
}
|
|
|
|
protected void btnDownLevel_Click(object sender, EventArgs e)
|
|
{
|
|
if (TV.SelectedNode == null)
|
|
return;
|
|
|
|
TreeNode node = TV.SelectedNode;
|
|
TreeNode parent = node.Parent;
|
|
|
|
if (parent == null)
|
|
{
|
|
int thisIndex = TV.Nodes.IndexOf(node);
|
|
if (thisIndex == 0)
|
|
return;
|
|
TV.Nodes.Remove(node);
|
|
TV.Nodes[thisIndex - 1].ChildNodes.Add(node);
|
|
TV.Nodes[thisIndex - 1].Expand();
|
|
node.Selected = true;
|
|
|
|
Dao組織圖.Update上層ID(DAC.GetInt32(node.Value), DAC.GetInt32(TV.Nodes[thisIndex - 1].Value), UserId);
|
|
Update排序(TV.Nodes[thisIndex - 1].ChildNodes);
|
|
}
|
|
else
|
|
{
|
|
int thisIndex = parent.ChildNodes.IndexOf(node);
|
|
if (thisIndex == 0)
|
|
return;
|
|
parent.ChildNodes.Remove(node);
|
|
parent.ChildNodes[thisIndex - 1].ChildNodes.Add(node);
|
|
parent.ChildNodes[thisIndex - 1].Expand();
|
|
node.Selected = true;
|
|
|
|
Dao組織圖.Update上層ID(DAC.GetInt32(node.Value), DAC.GetInt32(parent.ChildNodes[thisIndex - 1].Value), UserId);
|
|
Update排序(parent.ChildNodes[thisIndex - 1].ChildNodes);
|
|
}
|
|
}
|
|
|
|
protected void btnSelect組織類別_Click(object sender, EventArgs e)
|
|
{
|
|
組織類別Id = DAC.GetInt32(ddl組織類別.SelectedValue);
|
|
Dao組織圖.DrawTree(TV, 組織類別Id);
|
|
pnl組織圖.Visible = true;
|
|
TV.ExpandAll();
|
|
|
|
if (TV.Nodes.Count > 0)
|
|
{
|
|
TV.Nodes[0].Select();
|
|
TV_SelectedNodeChanged(sender, e);
|
|
}
|
|
}
|
|
|
|
protected void TV_SelectedNodeChanged(object sender, EventArgs e)
|
|
{
|
|
ddl主管.DataBind();
|
|
if (TV.SelectedNode == null)
|
|
{
|
|
txtNodeText.Text = "";
|
|
return;
|
|
}
|
|
|
|
txtNodeText.Text = TV.SelectedNode.Text;
|
|
// 20181023 檢查部門主管是否在部門人員中,若有才設定 dropdown 的值
|
|
組織圖 dept = Dao組織圖.SelectOne(DAC.GetInt32(TV.SelectedNode.Value)).FirstOrDefault();
|
|
if (dept != null && ddl主管.Items.FindByValue(dept.部門主管) != null)
|
|
ddl主管.SelectedValue = dept.部門主管;
|
|
}
|
|
}
|
|
} |