Files
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

247 lines
6.7 KiB
C#

//
// 這個檔案是 組織圖 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Web.UI.WebControls;
using WebLib;
namespace Education
{
///<summary>
/// 組織圖 資料存取類別
///</summary>
public partial class DAC_組織圖 : WebLib.DAC
{
///<summary>
/// InsertOne 之前會執行此方法
/// 在這裡可以做一些檢查或是自動編號等動作
/// 回傳 false 會打斷 InsertOne 的執行
///</summary>
protected virtual bool BeforeInsertOne(組織圖 value)
{
value.排序 = Next排序(value.組織類別ID, value.上層ID);
return true;
}
///<summary>
/// InsertOne 之後會執行此方法
///</summary>
protected virtual void AfterInsertOne(組織圖 value)
{
}
///<summary>
/// InsertOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnInsertOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// UpdateOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 UpdateOne 的執行
///</summary>
protected virtual bool BeforeUpdateOne(組織圖 value)
{
return true;
}
///<summary>
/// UpdateOne 之後會執行此方法
///</summary>
protected virtual void AfterUpdateOne(組織圖 value)
{
}
///<summary>
/// UpdateOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnUpdateOneError(Exception error, out bool handled)
{
handled = false;
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne(組織圖 value)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne(組織圖 value)
{
new DAC_組織人員(conn).Delete組織人員(value.組織ID);
}
///<summary>
/// DeleteOne 之前會執行此方法
/// 在這裡可以做一些檢查
/// 回傳 false 會打斷 DeleteOne 的執行
///</summary>
protected virtual bool BeforeDeleteOne(int 組織ID, int DB_APPNO)
{
return true;
}
///<summary>
/// DeleteOne 之後會執行此方法
///</summary>
protected virtual void AfterDeleteOne(int 組織ID, int DB_APPNO)
{
}
///<summary>
/// DeleteOne 發生錯誤時會執行此方法
///</summary>
protected virtual void OnDeleteOneError(Exception error, out bool handled)
{
handled = false;
}
// 有另外加上去的屬性及方法,請加在這裡
public int Next排序(int 組織類別ID, int 上層ID)
{
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = "SELECT ISNULL(MAX(排序), 0) + 1 "
+ _from
+ " WHERE 組織類別ID=@組織類別ID AND 上層ID=@上層ID";
AddParam(cmdSelect, "組織類別ID", 組織類別ID);
AddParam(cmdSelect, "上層ID", 上層ID);
int i;
ExecuteScalar(cmdSelect, out i);
return i;
}
#region 畫樹狀結構的方法
public void DrawTree(TreeView tv, int 組織類別Id)
{
tv.Nodes.Clear();
DoDrawTree(tv.Nodes, 組織類別Id, 0);
}
private void DoDrawTree(TreeNodeCollection nodes, int 組織類別Id, int 上層ID)
{
組織圖List data = SelectOneLevel(組織類別Id, 上層ID);
foreach (組織圖 item in data)
{
TreeNode newNode = new TreeNode();
newNode.Value = item.組織ID.ToString();
newNode.Text = item.組織名稱;
nodes.Add(newNode);
DoDrawTree(newNode.ChildNodes, 組織類別Id, item.組織ID);
}
}
public 組織圖List SelectOneLevel(int 組織類別ID, int 上層ID)
{
組織圖List result = new 組織圖List();
IDataList list = result as IDataList;
DbCommand cmdSelect = NewCommand();
cmdSelect.CommandText = _select + _from + " WHERE 組織類別ID=@組織類別ID AND 上層ID=@上層ID ORDER BY 排序";
AddParam(cmdSelect, "組織類別ID", 組織類別ID);
AddParam(cmdSelect, "上層ID", 上層ID);
Select(cmdSelect, ref list);
return result;
}
#endregion
#region 調整樹狀結構的方法
/// <summary>
/// 移動這個節點的位置
/// </summary>
/// <param name="組織ID"></param>
/// <param name="上層ID"></param>
/// <param name="userId"></param>
public void Update上層ID(int 組織ID, int 上層ID, string userId)
{
組織圖List values = SelectOne(組織ID);
if (values.Count == 0)
return;
values[0].上層ID = 上層ID;
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
/// <summary>
/// 更新排序號
/// </summary>
public void Update排序(int 組織ID, int 排序, string userId)
{
組織圖List values = SelectOne(組織ID);
if (values.Count == 0)
return;
values[0].排序 = 排序;
values[0].DB_TRUSR = userId;
UpdateOne(values[0]);
}
#endregion
/// <summary>
/// 取得組織名稱
/// </summary>
/// <param name="職務ID"></param>
/// <returns></returns>
public string Get組織名稱(object 組織ID)
{
DbCommand cmd = NewCommand("SELECT 組織名稱 FROM " + _tableName
+ " WHERE 組織ID=@組織ID");
AddParam(cmd, "組織ID", 組織ID);
string s;
ExecuteScalar(cmd, out s);
return s;
}
private void Select子樹1(int 組織類別ID, int 組織ID, ref 組織圖List list)
{
組織圖List sub = SelectOneLevel(組織類別ID, 組織ID);
foreach (組織圖 item in sub)
{
list.Add(item);
Select子樹1(組織類別ID, item.組織ID, ref list);
}
}
public 組織圖List Select子樹(int 組織類別ID, int 組織ID)
{
組織圖List result = SelectOne(組織ID);
if (result.Count >= 0)
Select子樹1(組織類別ID, 組織ID, ref result);
return result;
}
}
///<summary>
/// 組織圖 資料集合類別
///</summary>
public partial class 組織圖List : List<組織圖>
{
// 有另外加上去的屬性及方法,請加在這裡
}
///<summary>
/// 組織圖 資料紀錄類別
///</summary>
public partial class 組織圖
{
// 有另外加上去的屬性及方法,請加在這裡
}
}