private string setNote(object p_note1, string s_note, ITableTree itable0) { string p_note = Convert.ToString(p_note1); string ret = !(string.IsNullOrEmpty(s_note)) ? s_note : p_note; //p_note,p_name DataBaseTable dt1; DataBaseField df1; if (itable0.NAME.TableName == "TF_TABLE") { if (!string.IsNullOrEmpty(p_note) && !DataBase.Factory(conn).TryGetValue(p_note, out dt1)) { ret = string.Format("表{0},不存在", p_note); ConsoleService.Fatal(p_note); } } else if (itable0.NAME.TableName == "TF_TB_FIELD") { if (!string.IsNullOrEmpty(s_note) && !DataBase.Factory(conn).TryGetValue(p_note, s_note, out dt1, out df1)) { ret = string.Format("字段{0}-{1},不存在", p_note, s_note); ConsoleService.Fatal(p_note); } } return ret; }
/// <summary> /// //自身为树,可以按照类型进行 树节点外观区别 /// //子相关对象 /// </summary> /// <param name="p_tableTree"></param> /// <param name="itables"></param> private void setTree(ITableTree p_tableTree, List<ITableTree> ListTables) { string p_tableStr = p_tableTree.val.TableName(); ITableImplement p_table1 = ((ITableImplement)p_tableTree.val.Clone()); p_table1.LoadAllAttributes(true); if (string.IsNullOrEmpty(p_table1.af_OrderByText) && p_tableTree.SORT_NO != null) p_table1.OrderBy(p_tableTree.SORT_NO, Order.Asc); #region 树 TF_TABLE #region//显示子节点 TF_TABLE if (Request["getSubNodes"] != null) { string nodetype = Request["ntype"]; StringBuilder sb = new StringBuilder("["); string id = Request["id"]; string p_name = null; string p_note = null; string s_name = null; string s_note = null; if (nodetype == p_tableStr + "-root") { #region ITableImplement obj = p_tableTree.val; if (!obj.GetInitialized(p_tableTree.M_ID)) obj.SetValue(p_tableTree.M_ID, 0); // p_table1.Top(1000); List<ITableImplement> lst = BLLTable<ITableImplement>.Factory(conn).Select(p_table1, obj); if (lst.Count != null) { for (int i = 0; i < lst.Count; i++) { if (sb.Length > 2) { sb.Append(","); } sb.Append("{id:'").Append(lst[i].GetValue(p_tableTree.ID)).Append("'"); sb.Append(",pid:'").Append("0").Append("',no:").Append((p_tableTree.SORT_NO!=null)?lst[i].GetValue(p_tableTree.SORT_NO):"1"); p_name = Convert.ToString(lst[i].GetValue(p_tableTree.NAME)); if (string.IsNullOrEmpty(p_name)) { p_name = p_note; "".ToString(); } else if (p_tableTree.NOTE != null) { p_note = Convert.ToString(lst[i].GetValue(p_tableTree.NOTE)); p_note = setNote(p_note, "", p_tableTree); sb.Append(",note:'[").Append(p_note).Append("]'"); } sb.Append(",name:'").Append(p_name).Append("'"); sb.Append(",sc:").Append("-1"); //CHG START 区分表管理和表单管理 jin-shenjian 2013/10/30 //sb.Append(",ntype:'" + p_tableStr + "'}"); if (p_tableStr.Equals("TF_FORM")) { //表单管理 sb.Append(",ntype:'" + p_tableStr + "_MANAGE'}"); } else { //表管理 sb.Append(",ntype:'" + p_tableStr + "'}"); } //CHG END 区分表管理和表单管理 jin-shenjian 2013/10/30 } } #endregion } //CHG START 增加树关系管理,布局管理,列表布局菜单 jin-shenjian 2013/10/30 //表单列表下添加三个管理菜单 else if (nodetype == p_tableStr + "_MANAGE") { sb.Append("{id:'").Append(id).Append("'"); sb.Append(",pid:'").Append(id).Append("',no:").Append("1"); sb.Append(",name:'").Append("字段管理").Append("'"); sb.Append(",sc:").Append("-1"); sb.Append(",ntype:'" + p_tableStr + "'}"); sb.Append(","); sb.Append("{id:'").Append(id).Append("'"); sb.Append(",pid:'").Append(id).Append("',no:").Append("1"); sb.Append(",name:'").Append("关系管理").Append("'"); sb.Append(",sc:").Append("-1"); sb.Append(",ntype:'TF_TB_RELA'}"); sb.Append(","); sb.Append("{id:'").Append(id).Append("'"); sb.Append(",pid:'").Append(id).Append("',no:").Append("1"); sb.Append(",name:'").Append("布局管理").Append("'"); sb.Append(",sc:").Append("-1"); sb.Append(",ntype:'TF_FORM_DESIGN'}"); } //布局管理下添加两个子菜单 else if (nodetype == p_tableStr + "_DESIGN") { sb.Append("{id:'").Append(id).Append("1'"); sb.Append(",pid:'").Append(id).Append("',no:").Append("1"); sb.Append(",name:'").Append("列表布局").Append("'"); sb.Append(",sc:").Append("0"); sb.Append(",ntype:'TF_DESIGN_LIST'}"); sb.Append(","); sb.Append("{id:'").Append(id).Append("2'"); sb.Append(",pid:'").Append(id).Append("',no:").Append("1"); sb.Append(",name:'").Append("详细布局").Append("'"); sb.Append(",sc:").Append("0"); sb.Append(",ntype:'TF_DESIGN_DETAIL'}"); } //ADD END 增加树关系管理,布局管理,列表布局菜单 jin-shenjian 2013/10/30 else if (nodetype == p_tableStr)//table1type.Contains(nodetype)) { //if (nodetype == "TF_TABLE")//明细表,将不会再有子级的明细表。。。 { #region ITableImplement objTB = p_tableTree.val; objTB.SetValue(p_tableTree.M_ID, int.Parse(id)); // p_table1.Top(1000); List<ITableImplement> lst = BLLTable<ITableImplement>.Factory(conn).Select(p_table1, objTB); if (lst.Count != null) { for (int i = 0; i < lst.Count; i++) { if (sb.Length > 2) { sb.Append(","); } sb.Append("{id:'").Append(lst[i].GetValue(p_tableTree.ID)).Append("'"); sb.Append(",pid:'").Append(id).Append("',no:").Append((p_tableTree.SORT_NO!=null)?lst[i].GetValue(p_tableTree.SORT_NO):"1"); p_name = Convert.ToString(lst[i].GetValue(p_tableTree.NAME)); if (string.IsNullOrEmpty(p_name)) { p_name = p_note; "".ToString(); } else if (p_tableTree.NOTE != null) { p_note = Convert.ToString(lst[i].GetValue(p_tableTree.NOTE)); p_note = setNote(p_note, "", p_tableTree); sb.Append(",note:'[").Append(p_note).Append("]'"); } sb.Append(",name:'").Append(p_name).Append("'"); sb.Append(",sc:").Append("1"); sb.Append(",ntype:'" + p_tableStr + "'}");//TF_TABLE-mx } } #endregion } #region if (ListTables.Count > 0) { foreach (ITableTree s_tableTree1 in ListTables) { ITableImplement val1 = ((ITableImplement)s_tableTree1.val.Clone()); string table1 = val1.TableName(); if (string.IsNullOrEmpty(val1.af_OrderByText) && s_tableTree1.SORT_NO != null) val1.OrderBy(s_tableTree1.SORT_NO, Order.Asc); // val1.Top(1000); ITableImplement condObj = ((ITableImplement)s_tableTree1.val.Clone()); condObj.SetValue(p_tableTree.ID, int.Parse(id)); List<ITableImplement> otherValue = new List<ITableImplement>(); otherValue.Add(p_table1); List<ITableImplement> condtions = new List<ITableImplement>(); condtions.Add(condObj); List<ITableImplement> lst = BLLTable<ITableImplement>.Factory(conn).Select(val1, s_tableTree1.relations, otherValue, condtions); if (lst.Count > 0) { for (int i = 0; i < lst.Count; i++) { if (sb.Length > 2) { sb.Append(","); } ITableImplement table = lst[i]; sb.Append("{id:'").Append(table.GetValue(s_tableTree1.ID)).Append("'"); sb.Append(",pid:'").Append(table.GetValue(s_tableTree1.M_ID)).Append("',no:") .Append((s_tableTree1.SORT_NO!=null)?table.GetValue(s_tableTree1.SORT_NO):"1"); s_name = Convert.ToString(table.GetValue(s_tableTree1.NAME)); sb.Append(",name:'").Append(s_name).Append("'"); if (s_tableTree1.NOTE != null) { s_note = Convert.ToString(table.GetValue(s_tableTree1.NOTE)); if (s_tableTree1.NAME.TableName == "TF_TB_FIELD") s_note = setNote(table.GetValue("TF_TABLE","TB_NAME"), s_note, s_tableTree1); sb.Append(",note:'[").Append(s_note).Append("]'"); } sb.Append(",sc:").Append("0"); sb.Append(",ntype:'" + table1 + "'}"); } } } } #endregion } else { sb = new StringBuilder(); } //sb.Append("{id:'").Append("1"); //sb.Append("',pid:'").Append("0").Append("',no:").Append("1"); //sb.Append(",sc:").Append("1"); //sb.Append(",name:'").Append("aaaaa(aaa)").Append("',ntype:'TF_FORM'}"); if (sb.Length > 1) sb.Append("]"); Response.Write(sb.ToString()); } #endregion #region//删除节点 if (Request["deleteNode"] != null) { string str = ""; string delID = Request["id"]; string ntype = Request["ntype"]; //CHG START 删除表单判断变更 jin-shenjian 2013/10/30 //if (ntype == p_tableStr)//if (ntype == "table" || ntype == "TF_TABLE-mx") if (ntype == p_tableStr + "_MANAGE" || ntype == p_tableStr)//if (ntype == "table" || ntype == "TF_TABLE-mx") //CHG END 删除表单判断变更 jin-shenjian 2013/10/30 { #region//删除表 int re = 0; string msg = "删除数据对象成功!";// "删除数据库表成功!"; ITableImplement cccSub = ((ITableImplement)p_tableTree.val.Clone()); cccSub.SetValue(p_tableTree.M_ID, int.Parse(delID)); bool isAllowDel = true; if (BLLTable<ITableImplement>.Count(cccSub) > 0) { isAllowDel = false; msg = "存在明细对象,不能删除此对象";//"存在明细表,不能删除!"; } else //相关子对象,相关子对象如果存在,能否被删除呢。级联删除。 { if (ListTables.Count > 0)// "存在字段,不能删除此表"; { foreach (ITableTree sub_table1 in ListTables) { ITableImplement hadcol = ((ITableImplement)sub_table1.val.Clone()); hadcol.SetValue(sub_table1.M_ID, int.Parse(delID)); if (BLLTable<ITableImplement>.Exists(hadcol)) { msg = "存在相关对象(子对象),不能删除此对象"; isAllowDel = false; break; } } } } if (isAllowDel) { //外部条件 //TF_FORM useTB = new TF_FORM(); //useTB.Where("TB_ID=" + delID + " or TB_IDS like '%," + delID + ",%'"); //if (BLLTable<TF_FORM>.Exists(useTB)) //{ // msg = "此表已倍表单使用,不能删除"; // goto _no_del; //} re = BLLTable<ITableImplement>.Factory(conn).Delete(p_tableTree.ID, delID); if (re > 0) { //foreach (ITableTree sub_table1 in ListTables) //{ // //??? // if (BLLTable<ITableImplement>.Factory(conn).Delete(sub_table1.M_ID, delID) < 0) // { // msg = "删除数据对象成功,但删除子对象信息失败!"; // } // else msg = "删除数据对象成功!"; //} } else { msg = "删除数据对象失败!"; } //_no_del: } #endregion str = "{re:" + re + ",msg:'" + msg + "'}"; } else { if (ListTables.Count > 0) { foreach (ITableTree itable1 in ListTables) { if (ntype == itable1.val._TableName)//if (ntype == "field") { int re = 0; string msg = "删除数据对象成功!"; #region//删除表字段 //ADD START 更新表字段是否使用状态 jin-shenjian 2013/10/28 //更新表字段是否使用状态 if (ntype.Equals("TF_F_COLUMN")) { TF_F_COLUMN objCond = new TF_F_COLUMN(); objCond.COLUMN_ID = Convert.ToInt32(delID); TF_TB_FIELD objVal = new TF_TB_FIELD(); //字段未使用 objVal.CREATED = 0; int ret2 = BLLTable<TF_TB_FIELD>.Factory(conn).Update(objVal, objCond, new Relation(TF_TB_FIELD.Attribute.FIELD_ID, TF_F_COLUMN.Attribute.FIELD_ID)); } //ADD END 更新表字段是否使用状态 jin-shenjian 2013/10/28 int ret1 = BLLTable<ITableImplement>.Factory(conn).Delete(itable1.ID, delID); if (ret1 <= 0) { msg = "删除数据对象失败!"; } else { msg = "删除数据对象成功!"; } #endregion //CHG START 判断是否删除变量选错 jin-shenjian 2013/10/28 //str = "{re:" + re + ",msg:'" + msg + "'}"; str = "{re:" + ret1 + ",msg:'" + msg + "'}"; //CHG START 判断是否删除变量选错 jin-shenjian 2013/10/28 } } } } Response.Write(str); } #endregion #endregion 树 TF_TABLE }
protected void Page_Load(object sender, EventArgs e) { //dics.Add("TF_TABLE", "TF_TABLE-mx"); if (!IsPostBack) { ITableTree p_itable1 = new ITableTree(); p_itable1.val = new TF_TABLE(); p_itable1.NAME = new AttributeItem("TF_TABLE", "CH_NAME"); p_itable1.NOTE = new AttributeItem("TF_TABLE", "TB_NAME"); p_itable1.ID = new AttributeItem("TF_TABLE", "TB_ID"); p_itable1.M_ID = new AttributeItem("TF_TABLE", "M_TB_ID"); p_itable1.SORT_NO = new AttributeItem("TF_TABLE", "SORT_NO"); List<ITableTree> ListTables10 = new List<ITableTree>(); ITableTree s_itable1 = new ITableTree(); s_itable1.val = new TF_TB_FIELD(); s_itable1.NAME = new AttributeItem("TF_TB_FIELD", "NOTE"); s_itable1.ID = new AttributeItem("TF_TB_FIELD", "FIELD_ID"); s_itable1.NOTE = new AttributeItem("TF_TB_FIELD", "FIELD_NAME"); s_itable1.M_ID = new AttributeItem("TF_TB_FIELD", "TB_ID"); s_itable1.SORT_NO = new AttributeItem("TF_TB_FIELD", "SORT_NO"); s_itable1.relations.Add(new Relation(TF_TB_FIELD.Attribute.TB_ID, TF_TABLE.Attribute.TB_ID, RelationType.LeftJoin)); ListTables10.Add(s_itable1); setTree(p_itable1, ListTables10); ////////////////////////////////////////////// ITableTree p_itable2 = new ITableTree(); p_itable2.val = new TF_FORM(); p_itable2.NAME = new AttributeItem("TF_FORM", "F_NAME"); p_itable2.ID = new AttributeItem("TF_FORM", "FORM_ID"); p_itable2.M_ID = new AttributeItem("TF_FORM", "M_FORM_ID"); //itable20.SORT_NO = new AttributeItem("TF_FORM", "SORT_NO");//没有 List<ITableTree> ListTables20 = new List<ITableTree>(); ITableTree s_itable2 = new ITableTree(); s_itable2.val = new TF_F_COLUMN(); s_itable2.NAME = new AttributeItem("TF_F_COLUMN", "SHOW_NAME"); s_itable2.ID = new AttributeItem("TF_F_COLUMN", "COLUMN_ID"); s_itable2.M_ID = new AttributeItem("TF_F_COLUMN", "FORM_ID"); s_itable2.SORT_NO = new AttributeItem("TF_F_COLUMN", "SORT_NO"); s_itable2.relations.Add(new Relation(TF_F_COLUMN.Attribute.FORM_ID, TF_FORM.Attribute.FORM_ID, RelationType.LeftJoin)); ListTables20.Add(s_itable2); setTree(p_itable2, ListTables20); } Response.End(); }