Example #1
0
        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);
            }
        }
Example #2
0
        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;
            }
        }
Example #3
0
        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);
        }