chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -0,0 +1,318 @@
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.;
}
}
}