private void InitModel(string modelname) { CustomClassCache.DelComboCache(); /* remoting * string sql = string.Format("SELECT * FROM sys_modl_def WHERE modelname_en='{0}'", modelname); * DataTable tbl = Helper.GetDataTable(sql, Conn); */ string filter = string.Format("modelname_en='{0}'", modelname); DataTable tbl = Helper.GetDataTableProxy("sys_modl_def", filter, null, Conn); DataRow row = tbl.Rows[0]; string modl_id = row["id"].ToString(); // 模块id ModID = Convert.ToInt32(modl_id); //不检查调试库中的内容 if (MainForm.conn.Database.ToString().ToLower() != "s3design" && MainForm.conn.Database.ToString().ToLower() != "s3design_debug") { // 当前用户能否执行保存命令 /* remoting * sql = string.Format("SELECT * FROM sys_useracl_desc WHERE userindex = {0} AND moduleid = {1} AND canwrite = 1", Program.m_rightmgr._userindex, this.ModID); * DataTable tbl_acl_desc = Helper.GetDataTable(sql, Conn); */ filter = string.Format("userindex = {0} AND moduleid = {1} AND canwrite = 1", Program.m_rightmgr._userindex, this.ModID); DataTable tbl_acl_desc = Helper.GetDataTableProxy("sys_useracl_desc", filter, null, Conn); if (tbl_acl_desc.Rows.Count > 0) { this.CanSaveDB = true; } // 当前用户能否配置表元 /* remoting * sql = string.Format("SELECT * FROM sys_useracl_desc WHERE userindex = {0} AND moduleid = {1} AND canconfigmeta = 1", Program.m_rightmgr._userindex, this.ModID); * tbl_acl_desc = Helper.GetDataTable(sql, Conn); */ filter = string.Format("userindex = {0} AND moduleid = {1} AND canconfigmeta = 1", Program.m_rightmgr._userindex, this.ModID); tbl_acl_desc = Helper.GetDataTableProxy("sys_useracl_desc", filter, null, Conn); if (tbl_acl_desc.Rows.Count > 0) { this.CanCfg = true; } } // 模块名 ModelName = modelname; this.bar1.Text = ModelName + "树"; // 模块中文名 this.Text = ModelName; // 主表名 /* * sql = string.Format("SELECT * FROM sys_modl_tab_def WHERE modid='{0}'", modl_id); * DataTable tbl_tab_def = Helper.GetDataTable(sql, Conn); */ filter = string.Format("modid='{0}'", modl_id); DataTable tbl_tab_def = Helper.GetDataTableProxy("sys_modl_tab_def", filter, null, Conn); if (tbl_tab_def.Rows.Count < 1) { MessageBox.Show("在表 sys_modl_tab_def 中找不到模块的信息。请检查相关数据表。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } DataRow row_tab = tbl_tab_def.Rows[0]; MainTableName = row_tab["tablename"].ToString().Trim(); // 主表 //TblMain = Helper.GetDataTable("SELECT * FROM " + MainTableName, Conn); //TblMain = Helper.GetDataTableProxy(MainTableName, Conn); TblMain = Helper.GetDataTableTopRowProxy(MainTableName, Conn); HasDefaultRow = Helper.HasTableDefaultRow(MainTableName, Conn); // 显示的字段 DisplayField = row_tab["display_field"].ToString().Trim(); // tree分类的字段们 CatFields = row_tab["catfields"].ToString().Trim().Split(new char[] { ',' }); // 显示字段也用来作分类吗 CatfieldsContainsDisplayfield = false; foreach (string str in CatFields) { if (str == DisplayField) { CatfieldsContainsDisplayfield = true; break; } } ArrayList arrDBPrimaryKey = new ArrayList(); // 显示字段是key foreach (DataColumn col in TblMain.PrimaryKey) { if (col.ColumnName == DisplayField) { KeysContainsDisplayfileld = true; //break; } arrDBPrimaryKey.Add(col.ColumnName); } // 分类字段中有key吗 foreach (DataColumn col in TblMain.PrimaryKey) { foreach (string strCat in CatFields) { if (strCat == col.ColumnName) { CatFieldsContainsKey = true; break; } } } if (CatFieldsContainsKey) { for (int i = 0; i < TblMain.PrimaryKey.Length; i++) { string strkey = TblMain.PrimaryKey[i].ColumnName; bool bThisKeyInCat = false; foreach (string strCat in CatFields) { if (strkey == strCat) { bThisKeyInCat = true; } } if (!bThisKeyInCat) { ToChangeIndex = i; break; } } } // 新建记录时的起始 id UpdateStartIDs(); // 分页们 m_Pages = new ArrayList(); bool bFirstTab = true; foreach (DataRow r in tbl_tab_def.Rows) { bool bCustom = false; if (r["custom_tab"] != DBNull.Value) { bCustom = (r["custom_tab"].ToString().Trim() == "1"); } PageDesc tab = new PageDesc(); tab.id = Convert.ToInt32(r["modtabid"]); tab.name_cn = r["name"].ToString(); tab.bCustomTab = bCustom; if (!bCustom) { tab.pg = new PropertyGrid(); this.contextMenuBar1.SetContextMenuEx(tab.pg, this.cmScriptOp); } AddTab(ref tab, bFirstTab); bFirstTab = false; tab.dbClass = new DBCustomClass(null, m_lua, tab.id, -1); tab.Properties = tab.dbClass; tab.dbClass.OnAsynNotify += new DBCustomClass.AsynNotifyHandler(OnAsynNotify); //todo:增加子结点中的Onasynnotify m_Pages.Add(tab); } if (arrDBPrimaryKey.Count > 0) { m_recLock = new RecordLockEx(Conn, MainTableName, (string[])arrDBPrimaryKey.ToArray(typeof(string)), ModID); } }
private void AddTab(ref PageDesc tab, bool firstTab) { TabItem tabitem = new TabItem(); TabControlPanel panel = new TabControlPanel(); if (!tab.bCustomTab) { tab.pg.SelectedObject = null; tab.pg.Name = "propertyGrid" + tab.id.ToString(); tab.pg.BackColor = this.BasePg.BackColor; tab.pg.CommandsDisabledLinkColor = this.BasePg.CommandsDisabledLinkColor; tab.pg.Dock = this.BasePg.Dock; tab.pg.LineColor = this.BasePg.LineColor; tab.pg.Location = this.BasePg.Location; tab.pg.PropertySort = this.BasePg.PropertySort; tab.pg.Size = this.BasePg.Size; tab.pg.TabIndex = this.BasePg.TabIndex; tab.pg.SelectedGridItemChanged += new SelectedGridItemChangedEventHandler(BasePg_SelectedGridItemChanged); tab.pg.SelectedObjectsChanged += new EventHandler(BasePg_SelectedObjectsChanged); tab.pg.PropertyValueChanged += new PropertyValueChangedEventHandler(this.BasePg_PropertyValueChanged); tab.pg.Tag = tab.id; } panel.SuspendLayout(); this.tabControl1.Controls.Add(panel); if (!tab.bCustomTab) panel.Controls.Add(tab.pg); else this.contextMenuBar1.SetContextMenuEx(/*panel*/tabControl1, this.cmScriptOp); panel.Dock = BasePanel.Dock; panel.Location = BasePanel.Location; panel.Name = "tabControlPanel" + tab.id.ToString(); panel.Padding = BasePanel.Padding; panel.Size = BasePanel.Size; panel.Style.BackColor1.Color = BasePanel.Style.BackColor1.Color; panel.Style.BackColor2.Color = BasePanel.Style.BackColor2.Color; panel.Style.Border = BasePanel.Style.Border; panel.Style.BorderColor.Color = BasePanel.Style.BorderColor.Color; panel.Style.BorderSide = BasePanel.Style.BorderSide; panel.Style.GradientAngle = BasePanel.Style.GradientAngle; panel.TabItem = tabitem; panel.ResumeLayout(false); tabitem.AttachedControl = panel; tabitem.Name = "tabItem" + tab.id.ToString(); tabitem.Text = tab.name_cn; if (!tab.bCustomTab) tabitem.Tag = tab.pg; else tabitem.Tag = tab.id; // ModTabID this.tabControl1.Tabs.Add(tabitem); if (firstTab) { this.tabControl1.SelectedTab = tabitem; } }
private void InitModel(string modelname) { CustomClassCache.DelComboCache(); /* remoting string sql = string.Format("SELECT * FROM sys_modl_def WHERE modelname_en='{0}'", modelname); DataTable tbl = Helper.GetDataTable(sql, Conn); */ string filter = string.Format("modelname_en='{0}'", modelname); DataTable tbl = Helper.GetDataTableProxy("sys_modl_def", filter, null, Conn); DataRow row = tbl.Rows[0]; string modl_id = row["id"].ToString(); // 模块id ModID = Convert.ToInt32(modl_id); //不检查调试库中的内容 if (MainForm.conn.Database.ToString().ToLower() != "s3design" && MainForm.conn.Database.ToString().ToLower() != "s3design_debug") { // 当前用户能否执行保存命令 /* remoting sql = string.Format("SELECT * FROM sys_useracl_desc WHERE userindex = {0} AND moduleid = {1} AND canwrite = 1", Program.m_rightmgr._userindex, this.ModID); DataTable tbl_acl_desc = Helper.GetDataTable(sql, Conn); */ filter = string.Format("userindex = {0} AND moduleid = {1} AND canwrite = 1", Program.m_rightmgr._userindex, this.ModID); DataTable tbl_acl_desc = Helper.GetDataTableProxy("sys_useracl_desc", filter, null, Conn); if (tbl_acl_desc.Rows.Count > 0) this.CanSaveDB = true; // 当前用户能否配置表元 /* remoting sql = string.Format("SELECT * FROM sys_useracl_desc WHERE userindex = {0} AND moduleid = {1} AND canconfigmeta = 1", Program.m_rightmgr._userindex, this.ModID); tbl_acl_desc = Helper.GetDataTable(sql, Conn); */ filter = string.Format("userindex = {0} AND moduleid = {1} AND canconfigmeta = 1", Program.m_rightmgr._userindex, this.ModID); tbl_acl_desc = Helper.GetDataTableProxy("sys_useracl_desc", filter, null, Conn); if (tbl_acl_desc.Rows.Count > 0) this.CanCfg = true; } // 模块名 ModelName = modelname; this.bar1.Text = ModelName + "树"; // 模块中文名 this.Text = ModelName; // 主表名 /* sql = string.Format("SELECT * FROM sys_modl_tab_def WHERE modid='{0}'", modl_id); DataTable tbl_tab_def = Helper.GetDataTable(sql, Conn); */ filter = string.Format("modid='{0}'", modl_id); DataTable tbl_tab_def = Helper.GetDataTableProxy("sys_modl_tab_def", filter, null, Conn); if (tbl_tab_def.Rows.Count < 1) { MessageBox.Show("在表 sys_modl_tab_def 中找不到模块的信息。请检查相关数据表。", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } DataRow row_tab = tbl_tab_def.Rows[0]; MainTableName = row_tab["tablename"].ToString().Trim(); // 主表 //TblMain = Helper.GetDataTable("SELECT * FROM " + MainTableName, Conn); //TblMain = Helper.GetDataTableProxy(MainTableName, Conn); TblMain = Helper.GetDataTableTopRowProxy(MainTableName, Conn); HasDefaultRow = Helper.HasTableDefaultRow(MainTableName, Conn); // 显示的字段 DisplayField = row_tab["display_field"].ToString().Trim(); // tree分类的字段们 CatFields = row_tab["catfields"].ToString().Trim().Split(new char[] { ',' }); // 显示字段也用来作分类吗 CatfieldsContainsDisplayfield = false; foreach (string str in CatFields) { if (str == DisplayField) { CatfieldsContainsDisplayfield = true; break; } } ArrayList arrDBPrimaryKey = new ArrayList(); // 显示字段是key foreach (DataColumn col in TblMain.PrimaryKey) { if (col.ColumnName == DisplayField) { KeysContainsDisplayfileld = true; //break; } arrDBPrimaryKey.Add(col.ColumnName); } // 分类字段中有key吗 foreach (DataColumn col in TblMain.PrimaryKey) { foreach (string strCat in CatFields) { if (strCat == col.ColumnName) { CatFieldsContainsKey = true; break; } } } if (CatFieldsContainsKey) { for (int i = 0; i < TblMain.PrimaryKey.Length; i++) { string strkey = TblMain.PrimaryKey[i].ColumnName; bool bThisKeyInCat = false; foreach (string strCat in CatFields) { if (strkey == strCat) { bThisKeyInCat = true; } } if (!bThisKeyInCat) { ToChangeIndex = i; break; } } } // 新建记录时的起始 id UpdateStartIDs(); // 分页们 m_Pages = new ArrayList(); bool bFirstTab = true; foreach (DataRow r in tbl_tab_def.Rows) { bool bCustom = false; if (r["custom_tab"] != DBNull.Value) bCustom = (r["custom_tab"].ToString().Trim() == "1"); PageDesc tab = new PageDesc(); tab.id = Convert.ToInt32(r["modtabid"]); tab.name_cn = r["name"].ToString(); tab.bCustomTab = bCustom; if (!bCustom) { tab.pg = new PropertyGrid(); this.contextMenuBar1.SetContextMenuEx(tab.pg, this.cmScriptOp); } AddTab(ref tab, bFirstTab); bFirstTab = false; tab.dbClass = new DBCustomClass(null, m_lua, tab.id, -1); tab.Properties = tab.dbClass; tab.dbClass.OnAsynNotify += new DBCustomClass.AsynNotifyHandler(OnAsynNotify); //todo:增加子结点中的Onasynnotify m_Pages.Add(tab); } if (arrDBPrimaryKey.Count > 0) m_recLock = new RecordLockEx(Conn, MainTableName, (string[])arrDBPrimaryKey.ToArray(typeof(string)), ModID); }