using System; using System.Data; using System.Data.OleDb; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Linq; using System.Data.Entity.Infrastructure; using System.Collections; using System.Collections.Generic; public partial class admin_bed_kind_reg : MyWeb.config { DataTable treeDt = new DataTable(); const int LevelMax = Model.bed_order.KindLevelMax; //分類層數 private Model.ezEntities _db = new Model.ezEntities(); public string _this_id = ""; public string _this_root = ""; public Dictionary _bedType = null; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { BuildTreeView(); _bedType = publicFun.enum_desc(); //床位型態 if (!isStrNull(Request["num"])) { _this_id = ValString(Request["num"]); int _num = Val(Request["num"]); var prod = _db.bed_kind.AsEnumerable().Where(q => q.num == _num).FirstOrDefault(); if (prod != null) { title_msg.Text = "修改【" + prod.kind + "】的分類名稱"; item_name.Text = prod.kind; sex.SelectedValue = prod.sex; demo.Text = prod.demo; _this_root = prod.root.ToString(); if (prod.root > 0) { sexPlaceHolder.Visible = false; } HiddenField1.Value = prod.kind; } else { Response.Redirect(Request.Url.AbsolutePath ); } edit.Visible = true; add.Visible = false; down_table.Visible = true; start.Visible = false; } else { table.Visible = false; down_table.Visible = false; if (Convert.ToString(Request["msg"]) == "A") { start.Text = "【資料修改成功】"; } else if (Convert.ToString(Request["msg"]) == "B") { start.Text = "【資料新增成功】"; } else if (Convert.ToString(Request["msg"]) == "C") { start.Text = "【資料刪除成功】"; } else { start.Text = "【請點選下方欲新增、修改或刪除的分類】"; } } } } #region 建立分類 protected void TreeTopology() { MyWeb.sql sql = new MyWeb.sql(); OleDbConnection sqlConn = sql.conn(db, p_name); try { sqlConn.Open(); OleDbCommand sqlCmd = new OleDbCommand("", sqlConn); sqlCmd.CommandText = "SELECT num,kind,root FROM bed_kind ORDER BY kind,root, range"; treeDt = sql.dataTable(sqlCmd); } catch (Exception ex) { Response.Write(ex.Message); } finally { sqlConn.Close(); sqlConn.Dispose(); } } public void BuildTreeView() { TreeView2.Nodes.Clear(); TreeTopology(); BuildChild(0, TreeView2.Nodes); treeDt.Dispose(); } public void BuildChild(int RootUid, TreeNodeCollection Nodes, int Level=1) { DataTable dt = treeDt; foreach (DataRow row in dt.Rows) { if (row["root"].ToString() == RootUid.ToString()) { TreeNode NewNode = new TreeNode(); if (Convert.ToString(Request["num"]) == row["num"].ToString() & HiddenField1.Value != "AddMainItem") { NewNode.Text = "" + row["kind"].ToString() + ""; if (Level +1 > LevelMax) { ImageButton5.Visible = false; } } else { NewNode.Text = row["kind"].ToString(); } NewNode.NavigateUrl = Request.Url.AbsolutePath + "?num=" + row["num"].ToString() ; NewNode.Expand(); Nodes.Add(NewNode); if (Level + 1 <= LevelMax) { BuildChild((int)row["num"], NewNode.ChildNodes, Level + 1); } } } } #endregion #region 新增分類按鈕事件 protected void ImageButton5_Click(object sender, EventArgs e) { title_msg.Text = "於【" + HiddenField1.Value + "】樓層下,新增房號"; item_name.Text = ""; sex.SelectedValue = ""; add.Visible = true; edit.Visible = false; down_table.Visible = false; start.Visible = false; demo.Text = ""; _this_id = ""; _this_root = Request["num"]; Literal1.Text = "房號/房名"; sexPlaceHolder.Visible = false; } protected void ImageButton4_Click(object sender, EventArgs e) { title_msg.Text = "於根目錄下,新增樓層"; table.Visible = true; item_name.Text = ""; sex.SelectedValue = ""; demo.Text = ""; add.Visible = true; edit.Visible = false; down_table.Visible = false; start.Visible = false; HiddenField1.Value = "AddMainItem"; BuildTreeView(); _this_id = ""; _this_root = ""; Literal1.Text = "樓層名稱"; sexPlaceHolder.Visible = true; } #endregion #region 資料修改 protected void edit_Click(object sender, EventArgs e) { L_msg.Text = ""; int _num = Val(Request["num"]); try { Model.bed_kind bed_kind = _db.bed_kind.Where(q => q.num == _num).FirstOrDefault();//修改 if (bed_kind != null) { bed_kind.kind = item_name.Text; bed_kind.sex = sex.SelectedValue; bed_kind.demo = demo.Text; _db.SaveChanges(); Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Bed, (int)Model.admin_log.Status.Update, "分類:" + item_name.Text); //for postback _this_id = _num.ToString(); _this_root = bed_kind.root.ToString(); L_msg.Type = alert_type.success; L_msg.Text = "操作成功"; } else { L_msg.Type = alert_type.danger; L_msg.Text = "無此資料"; } } catch (DbUpdateConcurrencyException) { L_msg.Type = alert_type.danger; L_msg.Text = "Error"; throw; } BuildTreeView(); } #endregion #region 資料新增 protected void add_Click(object sender, EventArgs e) { L_msg.Text = ""; int range = 1; int root = 0; if (HiddenField1.Value != "AddMainItem") { root = Convert.ToInt32(Request["num"]); } try { var prod = _db.bed_kind.AsEnumerable().Where(q => q.root == root).OrderByDescending(q => q.range).FirstOrDefault(); if (prod != null) if (prod.range.HasValue) range = prod.range.Value + 1; Model.bed_kind bed_kind = new Model.bed_kind();//新增 bed_kind.kind = item_name.Text; bed_kind.demo = demo.Text; bed_kind.root = root; bed_kind.range = range; bed_kind.sex = sex.SelectedValue; _db.bed_kind.Add(bed_kind); _db.SaveChanges(); int _id = bed_kind.num; _this_root = root.ToString(); Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Bed, (int)Model.admin_log.Status.Insert, "分類:" + item_name.Text); L_msg.Type = alert_type.success; L_msg.Text = "操作成功"; } catch (DbUpdateConcurrencyException) { throw; } BuildTreeView(); } #endregion #region 資料刪除 protected void ImageButton6_Click(object sender, EventArgs e) { int num = Val(Request["num"]); del_product(num); var prod = _db.bed_kind.AsEnumerable().Where(q => q.num == num).FirstOrDefault(); //刪除該筆資料 if (prod != null) { _db.bed_kind.Remove(prod); _db.SaveChanges(); //執行 } Del_Ohter_Items(Val(Request["num"])); Model.admin_log admin_log = new Model.admin_log(); admin_log.writeLog(admin.info.u_id, (int)Model.admin_log.Systems.Bed, (int)Model.admin_log.Status.Delete, "分類:" + item_name.Text); Response.Redirect(Request.Url.AbsolutePath + "?msg=C"); } public void Del_Ohter_Items(int d_num) { var prod = _db.bed_kind.AsEnumerable().Where(q => q.root == d_num).ToList(); if (prod.Count > 0) { foreach (var row in prod) { del_product(row.num); Del_Ohter_Items(row.num); } //查詢結果全部刪除 _db.bed_kind.RemoveRange(prod); _db.SaveChanges(); } } public void del_product(int num) { //床位資料 var prod = _db.bed_kind_detail.AsEnumerable().Where(q => q.bed_kind_id == num).ToList(); if (prod.Count > 0) { //清空分類 foreach (var item in prod) { //掛單資料 var prod2 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_kind_detail_id == item.num).ToList(); if (prod2.Count > 0) { //清空分類 foreach (var item2 in prod2) item2.bed_kind_detail_id = null; } item.bed_kind_id = null; } _db.SaveChanges(); } //掛單資料 var prod3 = _db.bed_order_detail.AsEnumerable().Where(q => q.bed_kind1 == num || q.bed_kind2 == num).ToList(); if (prod3.Count > 0) { //清空分類 foreach (var item in prod3) { if(item.bed_kind1 == num) item.bed_kind1 = null; if(item.bed_kind2 == num) item.bed_kind2 = null; } _db.SaveChanges(); } } #endregion protected void sortButton_Click(object sender, EventArgs e) { Response.Redirect("range.aspx"); } }