// // 這個檔案是 組織圖 資料表的資料存取類別 檔案二 // 您可以修改這個檔案,加入您自訂的屬性與方法 // 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 { /// /// 組織圖 資料存取類別 /// public partial class DAC_組織圖 : WebLib.DAC { /// /// InsertOne 之前會執行此方法 /// 在這裡可以做一些檢查或是自動編號等動作 /// 回傳 false 會打斷 InsertOne 的執行 /// protected virtual bool BeforeInsertOne(組織圖 value) { value.排序 = Next排序(value.組織類別ID, value.上層ID); return true; } /// /// InsertOne 之後會執行此方法 /// protected virtual void AfterInsertOne(組織圖 value) { } /// /// InsertOne 發生錯誤時會執行此方法 /// protected virtual void OnInsertOneError(Exception error, out bool handled) { handled = false; } /// /// UpdateOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 UpdateOne 的執行 /// protected virtual bool BeforeUpdateOne(組織圖 value) { return true; } /// /// UpdateOne 之後會執行此方法 /// protected virtual void AfterUpdateOne(組織圖 value) { } /// /// UpdateOne 發生錯誤時會執行此方法 /// protected virtual void OnUpdateOneError(Exception error, out bool handled) { handled = false; } /// /// DeleteOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 DeleteOne 的執行 /// protected virtual bool BeforeDeleteOne(組織圖 value) { return true; } /// /// DeleteOne 之後會執行此方法 /// protected virtual void AfterDeleteOne(組織圖 value) { new DAC_組織人員(conn).Delete組織人員(value.組織ID); } /// /// DeleteOne 之前會執行此方法 /// 在這裡可以做一些檢查 /// 回傳 false 會打斷 DeleteOne 的執行 /// protected virtual bool BeforeDeleteOne(int 組織ID, int DB_APPNO) { return true; } /// /// DeleteOne 之後會執行此方法 /// protected virtual void AfterDeleteOne(int 組織ID, int DB_APPNO) { } /// /// DeleteOne 發生錯誤時會執行此方法 /// 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 調整樹狀結構的方法 /// /// 移動這個節點的位置 /// /// /// /// 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]); } /// /// 更新排序號 /// 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 /// /// 取得組織名稱 /// /// /// 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; } } /// /// 組織圖 資料集合類別 /// public partial class 組織圖List : List<組織圖> { // 有另外加上去的屬性及方法,請加在這裡 } /// /// 組織圖 資料紀錄類別 /// public partial class 組織圖 { // 有另外加上去的屬性及方法,請加在這裡 } }