Ejemplo n.º 1
0
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.IsPostBack == false)
            {
                BP.WF.Flow fl = new BP.WF.Flow(this.FK_Flow);

                //设置状态.
                if (fl.DTSWay == BP.WF.Template.FlowDTSWay.None)
                {
                    this.RB_DTSWay0.Checked = true;
                }
                else
                {
                    this.RB_DTSWay1.Checked = true;
                }

                //绑定数据源.
                BP.Sys.SFDBSrcs srcs = new BP.Sys.SFDBSrcs();
                srcs.RetrieveAll();
                BP.Web.Controls.Glo.DDL_BindEns(this.DDL_DBSrc, srcs, fl.DTSDBSrc);

                //设置自动.
                this.DDL_DBSrc.AutoPostBack          = true;
                this.DDL_DBSrc.SelectedIndexChanged += new EventHandler(DDL_DBSrc_SelectedIndexChanged);

                //绑定表.
                BP.Sys.SFDBSrc src = new SFDBSrc(fl.DTSDBSrc);
                DataTable      dt  = src.GetTables();
                dt = RemoveView(dt);//去除视图

                BP.Web.Controls.Glo.DDL_BindDataTable(this.DDL_Table, dt, fl.DTSBTable);
                //设置自动.
                this.DDL_Table.AutoPostBack          = true;
                this.DDL_Table.SelectedIndexChanged += new EventHandler(DDL_Table_SelectedIndexChanged);

                //绑定字段同步的方式.
                if (fl.DTSField == BP.WF.Template.DTSField.SameNames)
                {
                    this.RB_DTSField0.Checked = true;
                }
                else
                {
                    this.RB_DTSField1.Checked = true;
                }

                //绑定同步的时间.
                if (fl.DTSTime == BP.WF.Template.FlowDTSTime.AllNodeSend)
                {
                    this.RB_DTSTime0.Checked = true;
                }
                if (fl.DTSTime == BP.WF.Template.FlowDTSTime.SpecNodeSend)
                {
                    this.RB_DTSTime1.Checked = true;
                }
                if (fl.DTSTime == BP.WF.Template.FlowDTSTime.WhenFlowOver)
                {
                    this.RB_DTSTime2.Checked = true;
                }
            }
        }
        public string SF2_GetCols()
        {
            string src   = this.GetRequestVal("src");
            string table = this.GetRequestVal("table");

            if (string.IsNullOrWhiteSpace(src))
            {
                throw new Exception("err@参数不正确");
            }

            if (string.IsNullOrWhiteSpace(table))
            {
                return("[]");
            }

            SFDBSrc   sr = new SFDBSrc(src);
            DataTable dt = sr.GetColumns(table);

            foreach (DataRow r in dt.Rows)
            {
                r["Name"] = r["No"] + (r["Name"] == null || r["Name"] == DBNull.Value || string.IsNullOrWhiteSpace(r["Name"].ToString()) ? "" : string.Format("[{0}]", r["Name"]));
            }

            return(BP.Tools.Json.ToJson(dt));
        }
Ejemplo n.º 3
0
        public string DTSBTable_Init()
        {
            DataSet ds = new DataSet();

            //获得数据源的表.
            BP.Sys.SFDBSrc src = new SFDBSrc("local");
            DataTable      dt  = src.GetTables();

            dt.TableName = "Tables";
            ds.Tables.Add(dt);


            //把节点信息放入.
            BP.WF.Nodes nds    = new Nodes(this.FK_Flow);
            DataTable   dtNode = nds.ToDataTableField("Nodes");

            ds.Tables.Add(dtNode);


            // 把流程信息放入.
            BP.WF.Flow fl     = new BP.WF.Flow(this.FK_Flow);
            DataTable  dtFlow = fl.ToDataTableField(this.FK_Flow);

            ds.Tables.Add(dtFlow);

            return(BP.Tools.Json.DataSetToJson(ds, false));
        }
Ejemplo n.º 4
0
        public string DTSBTableExt_Init()
        {
            //定义数据容器.
            DataSet ds = new DataSet();

            //获得数据表列.
            SFDBSrc   src     = new SFDBSrc(this.GetRequestVal("FK_DBSrc"));
            DataTable dtColms = src.GetColumns(this.GetRequestVal("TableName"));

            dtColms.TableName = "Cols";

            if (SystemConfig.AppCenterDBType == DBType.Oracle || SystemConfig.AppCenterDBType == DBType.PostgreSQL)
            {
                dtColms.Columns["NO"].ColumnName   = "No";
                dtColms.Columns["NAME"].ColumnName = "Name";
            }

            ds.Tables.Add(dtColms);

            //属性列表.
            MapAttrs  attrs   = new MapAttrs("ND" + int.Parse(this.FK_Flow) + "Rpt");
            DataTable dtAttrs = attrs.ToDataTableStringField("Sys_MapAttr");

            ds.Tables.Add(dtAttrs);

            //转化成json,返回.
            return(BP.Tools.Json.DataSetToJson(ds, false));
        }
Ejemplo n.º 5
0
        public string Imp_Src_Step3_Init()
        {
            DataSet ds = new DataSet();

            string    SColumns     = this.GetRequestVal("SColumns");
            SFDBSrc   src          = new SFDBSrc(this.GetRequestVal("FK_SFDBSrc"));
            DataTable tableColumns = src.GetColumns(this.GetRequestVal("STable"));

            //01.添加列
            DataTable dt = tableColumns.Clone();

            foreach (DataRow dr in tableColumns.Rows)
            {
                if (SColumns.Contains(dr["no"].ToString()))
                {
                    dt.ImportRow(dr);
                }
            }
            dt.TableName = "Columns";
            ds.Tables.Add(dt);

            //02.添加枚举
            SysEnums ens = new SysEnums(MapAttrAttr.MyDataType);

            ds.Tables.Add(ens.ToDataTableField("EnumsDataType"));
            ens = new SysEnums(MapAttrAttr.LGType);
            ds.Tables.Add(ens.ToDataTableField("EnumsLGType"));

            return(BP.Tools.Json.ToJson(ds));
        }
        public string SF2_GetTVs()
        {
            string src = this.GetRequestVal("src");

            SFDBSrc   sr = new SFDBSrc(src);
            DataTable dt = sr.GetTables();

            return(BP.Tools.Json.ToJson(dt));
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 选择一个数据源,进入步骤2
        /// </summary>
        /// <returns></returns>
        public string Imp_Src_Step2_Init()
        {
            SFDBSrc src = new SFDBSrc(this.GetRequestVal("FK_SFDBSrc"));

            //获取所有的表/视图
            DataTable dtTables = src.GetTables();

            return(BP.Tools.FormatToJson.ToJson(dtTables));
        }
Ejemplo n.º 8
0
        void ddl_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selSrc     = this.Ucsys1.GetDDLByID("DDL_" + SFTableAttr.FK_SFDBSrc).SelectedItemStringVal;
            var ddlMethods = this.Ucsys1.GetDDLByID("DDL_" + SFTableAttr.TableDesc);

            ddlMethods.Items.Clear();
            var dbsrc = new SFDBSrc(selSrc);
            var ms    = GetWebServiceMethods(dbsrc);

            foreach (var m in ms)
            {
                ddlMethods.Items.Add(new ListItem(m.Value, m.Key));
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// 获得系统的表
        /// </summary>
        /// <returns></returns>
        public string NewFrmGuide_Init()
        {
            DataSet ds = new DataSet();

            SFDBSrc src = new SFDBSrc("local");

            ds.Tables.Add(src.ToDataTableField("SFDBSrc"));

            DataTable tables = src.GetTables(true);

            tables.TableName = "Tables";
            ds.Tables.Add(tables);
            return(BP.Tools.Json.ToJson(ds));
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 检查SQL语句配置的正确性
        /// </summary>
        /// <param name="src">数据源对象</param>
        /// <param name="sModel">数据结构模式,“1”=oneone模式,“2”=onemore模式</param>
        /// <param name="table">检查所依据的表名</param>
        /// <param name="sql">组建表的SQL语句</param>
        /// <returns></returns>
        private string CheckSQL(SFDBSrc src, string sModel, string table, string sql)
        {
            DataTable dt    = null;
            string    error = string.Empty;

            //检查连接及SQL语法正确性
            try
            {
                dt = src.RunSQLReturnTable(sql, 0, 1);
            }
            catch (Exception ex)
            {
                error += ex.Message;
                return(error);
            }

            //检查返回的列及各列类型是否正确
            Dictionary <string, string> coldefs = sModel == "1" ? _oneones[table] : _onemores[table];
            DataColumn col         = null;
            string     errorFields = string.Empty;
            int        idx         = 0;

            foreach (KeyValuePair <string, string> coldef in coldefs)
            {
                error = string.Empty;

                if (!dt.Columns.Contains(coldef.Key))
                {
                    error += (++idx) + ". 不包含" + coldef.Key + "列,";
                }
                else
                {
                    col = dt.Columns[coldef.Key];
                    if (!Equals(col.DataType.Name, coldef.Value))
                    {
                        error += (error.EndsWith(",") ? "" : (++idx) + ". ") + coldef.Key + "列类型应为" + coldef.Value + ",现在是" + col.DataType.Name + "<br />";
                    }
                    else if (error.EndsWith(","))
                    {
                        error = error.TrimEnd(',') + "<br />";
                    }
                }

                errorFields += error;
            }

            return(errorFields);
        }
Ejemplo n.º 11
0
        /// <summary>
        /// 获取表字段
        /// </summary>
        /// <returns></returns>
        public string Imp_Src_Step2_GetColumns()
        {
            DataSet ds = new DataSet();

            //01.当前节点表单已经存在的列
            MapAttrs attrs = new MapAttrs(this.FK_MapData);

            ds.Tables.Add(attrs.ToDataTableField("MapAttrs"));

            //02.数据源表中的列
            SFDBSrc   src          = new SFDBSrc(this.GetRequestVal("FK_SFDBSrc"));
            DataTable tableColumns = src.GetColumns(this.GetRequestVal("STable"));

            tableColumns.TableName = "TableColumns";
            ds.Tables.Add(tableColumns);

            return(BP.Tools.Json.ToJson(ds));
        }
Ejemplo n.º 12
0
        public void DDL_DBSrc_SelectedIndexChanged(object sender, EventArgs e)
        {
            string dbsrc = this.DDL_DBSrc.SelectedValue;

            //绑定表.
            BP.Sys.SFDBSrc src = new SFDBSrc(dbsrc);
            DataTable      dt  = src.GetTables();

            dt = RemoveView(dt);

            Flow fl = new Flow(this.FK_Flow);

            BP.Web.Controls.Glo.DDL_BindDataTable(this.DDL_Table, dt, fl.DTSBTable);

            //System.Web.HttpContext.Current.Response.Write("<script language='JavaScript'>   window.parent.closeTab('设置字段匹配'); </script> ");

            System.Web.HttpContext.Current.Response.Write("<script language='JavaScript'>" +
                                                          "try{window.parent.closeTab('设置字段匹配');}catch{} </script> ");
        }
Ejemplo n.º 13
0
        protected void Page_Load(object sender, EventArgs e)
        {
            string   rpt   = "ND" + int.Parse(this.FK_Flow) + "Rpt";
            MapAttrs attrs = new MapAttrs(rpt);

            Flow fl = new Flow(this.FK_Flow);

            fl.RetrieveFromDBSources();

            fl.No = this.FK_Flow;
            if (string.IsNullOrEmpty(this.TableName) == true)
            {
                this.Pub1.AddFieldSet("配置错误", "请关闭该窗口,在流程属性里配置业务表名,然后点保存按钮,之后打开该功能界面。");
                return;
            }

            //获得数据表列.
            SFDBSrc   src = new SFDBSrc(this.FK_DBSrc);
            DataTable dt  = src.GetColumns(this.TableName);

            foreach (DataRow dr in dt.Rows)
            {
                string fType = dr["DBType"].ToString();
                string desc  = dr["Name"].ToString();

                dr["Name"] = dr["No"] + " " + dr["DBType"] + "(" + dr["DBLength"] + ") " + dr["Name"];
            }

            this.Pub1.AddTable();
            this.Pub1.AddCaptionLeft("请设置流程字段与业务表字段的同步映射");
            this.Pub1.AddTR();

            string textCenter = " style='text-align:center;'";

            this.Pub1.AddTDTitle(textCenter, "序");
            this.Pub1.AddTDTitle(textCenter, "是否同步");
            this.Pub1.AddTDTitle(textCenter, "类型");
            this.Pub1.AddTDTitle(textCenter, "业务表(" + fl.DTSBTable + ")");
            this.Pub1.AddTREnd();

            int       idx = 0;
            Hashtable ht  = new Hashtable();

            if (string.IsNullOrEmpty(fl.DTSFields))
            {
                fl.DTSFields = "@";
            }

            string[] fieldArr = fl.DTSFields.Split('@');
            string[] lcArr    = fieldArr[0].Split(',');
            string[] ywArr    = fieldArr[1].Split(',');

            for (int i = 0; i < lcArr.Length; i++)
            {
                ht.Add(lcArr[i], ywArr[i]);
            }


            #region 锁定workid 在第一行上.

            //guid workid必须选择一项
            BP.Web.Controls.RadioBtn rb_workId = new BP.Web.Controls.RadioBtn();
            rb_workId.ID        = "rb_workId";
            rb_workId.GroupName = "RB_KEY";
            rb_workId.Text      = "OID - WorkID";

            BP.Web.Controls.RadioBtn rb_guid = new BP.Web.Controls.RadioBtn();
            rb_guid.ID        = "rb_guid";
            rb_guid.GroupName = "RB_KEY";
            rb_guid.Text      = "GUID";

            foreach (DictionaryEntry de in ht)
            {
                if (de.Key.ToString().ToUpper() == "OID")
                {
                    rb_workId.Checked = true;
                }
                else
                {
                    rb_guid.Checked = true;
                }
            }

            this.Pub1.AddTR();
            this.Pub1.AddTDIdx("1");

            this.Pub1.AddTDBegin();
            this.Pub1.Add(rb_workId);
            this.Pub1.Add(rb_guid);
            this.Pub1.AddTDEnd();

            this.Pub1.AddTD("主键<img src='../../Img/PRI/2.png' border=0/>");

            BP.Web.Controls.DDL ddl = new BP.Web.Controls.DDL();
            ddl.Width = 250;
            ddl.ID    = "DDL_OID";

            ddl.Bind(dt, dt.Columns["No"].ToString(), dt.Columns["Name"].ToString());
            ddl.SetSelectItem(fl.DTSBTablePK);

            this.Pub1.AddTD(textCenter, ddl);
            this.Pub1.AddTREnd();
            #endregion 锁定workid 在第一行上.


            bool is1 = false;
            foreach (MapAttr attr in attrs)
            {
                if (attr.KeyOfEn.ToUpper() == "OID" || attr.KeyOfEn.ToUpper() == "GUID")
                {
                    continue;
                }

                idx++;

                is1 = this.Pub1.AddTR(is1);

                this.Pub1.AddTDIdx(idx);

                CheckBox cb = new CheckBox();
                cb.ID   = "CB_" + attr.KeyOfEn;
                cb.Text = attr.KeyOfEn + " - " + attr.Name;

                foreach (DictionaryEntry de in ht)
                {
                    if (attr.KeyOfEn == de.Key.ToString())
                    {
                        cb.Checked = true;
                    }
                }

                this.Pub1.AddTD(cb);
                this.Pub1.AddTD(attr.MyDataTypeStr);

                ddl       = new BP.Web.Controls.DDL();
                ddl.ID    = "DDL_" + attr.KeyOfEn;
                ddl.Width = 250;

                ddl.Bind(dt, dt.Columns["No"].ToString(), dt.Columns["Name"].ToString());

                if (cb.Checked == true)
                {
                    try
                    {
                        ddl.SetSelectItem(ht[attr.KeyOfEn].ToString());
                    }
                    catch
                    {
                    }
                }

                //类似的默认选中  区分大小写  方法if(ddl.SetSelectItem(attr.KeyOfEn)){cb.Checked = true;}不适用
                foreach (DataRow dr in dt.Rows)
                {
                    if (attr.KeyOfEn.ToUpper() == dr[0].ToString().ToUpper())
                    {
                        ddl.SetSelectItem(dr[0].ToString());
                        cb.Checked = true;
                        break;
                    }
                }

                this.Pub1.AddTD(textCenter, ddl);
                this.Pub1.AddTREnd();
            }


            this.Pub1.AddTableEnd();

            this.Pub1.AddBR();
            this.Pub1.AddBR();

            Button btn = new Button();
            btn.ID   = "Btn_Save";
            btn.Text = "保存";

            btn.Click += new EventHandler(btn_Save_Click);

            Button btnClose = new Button();
            btnClose.ID     = "Btn_Close";
            btnClose.Text   = "取消";
            btnClose.Click += new EventHandler(btnClose_Click);

            this.Pub1.Add(btn);
            this.Pub1.Add(btnClose);

            this.Pub1.AddBR();
            this.Pub1.AddBR();
            this.Pub1.AddBR();
        }
Ejemplo n.º 14
0
        protected void Page_Load(object sender, EventArgs e)
        {
            //this.Response.Redirect("ImpTableField1504.aspx?EnsName=" + this.FK_MapData,
            //    true);
            //return;

            #region 第1步.
            if (this.Step == 1)
            {
                BP.Sys.SFDBSrcs ens = new BP.Sys.SFDBSrcs();
                ens.RetrieveAll();

                Pub1.AddTable("class='Table' cellSpacing='0' cellPadding='0'  border='0' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "第1步:请选择数据源");
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDBegin();
                Pub1.AddUL("class='navlist'");

                foreach (BP.Sys.SFDBSrc item in ens)
                {
                    Pub1.AddLi("<div><a href='ImpTableField.aspx?Step=2&FK_MapData=" + this.FK_MapData + "&FK_SFDBSrc=" + item.No + "'><span class='nav'>" + item.No + "  -  " + item.Name + "</span></a></div>");
                }

                Pub1.AddLi("<div><a href=\"javascript:WinOpen('/WF/Comm/RefFunc/UIEn.aspx?EnsName=BP.Sys.SFDBSrcs')\" ><img src='../Img/New.gif' align='middle' /><span class='nav'>新建数据源</span></a></div>");

                Pub1.AddULEnd();
                Pub1.AddTDEnd();
                Pub1.AddTREnd();
                Pub1.AddTableEnd();
            }
            #endregion 第1步.

            #region 第2步.
            if (this.Step == 2)
            {
                SFDBSrc src = new SFDBSrc(this.FK_SFDBSrc);

                this.Pub1.Add("<div class='easyui-layout' data-options=\"fit:true\">");
                this.Pub1.Add(string.Format("<div data-options=\"region:'west',split:true,title:'选择 {0} 数据表/视图'\" style='width:200px;'>",
                                            src.DBName));

                DataTable dt = src.GetTables();
                this.Pub1.AddUL();
                foreach (DataRow dr in dt.Rows)
                {
                    string url = "?Step=" + this.Step + "&FK_MapData=" + this.FK_MapData + "&FK_SFDBSrc=" + this.FK_SFDBSrc + "&STable=" + dr["No"].ToString();
                    if (dr["No"].ToString() == this.STable)
                    {
                        this.Pub1.Add("<li><font color=red><b>" + dr["Name"] + "</font></b></li>");
                    }
                    else
                    {
                        this.Pub1.Add("<li><a href='" + url + "' >" + dr["Name"] + "</a></li>");
                    }
                }
                this.Pub1.AddULEnd();

                Pub1.AddDivEnd();

                this.Pub1.Add("<div data-options=\"region:'center',title:'第2步:请选择要导入的数据列(" + this.STable + ")'\" style='padding:5px;'>");

                //加载选中数据表/视图的列信息
                this.Pub1.AddTable(); // ("id='maintable' class='Table' cellSpacing='0' cellPadding='0'  border='0' style='width:100%'");
                this.Pub1.AddTR();

                var cb = new CheckBox();
                cb.ID = "CB_CheckAll";
                cb.Attributes["onclick"] = "CheckAll(this.checked)";

                this.Pub1.AddTDGroupTitle("style='width:40px;text-align:center'", cb);
                this.Pub1.AddTDGroupTitle("序");
                this.Pub1.AddTDGroupTitle("字段名");
                this.Pub1.AddTDGroupTitle("中文描述");
                this.Pub1.AddTDGroupTitle("style='width:80px;text-align:center'", "类型");
                this.Pub1.AddTDGroupTitle("style='width:50px;text-align:center'", "最大长度");
                this.Pub1.AddTREnd();

                MapAttrs attrs  = new MapAttrs(this.FK_MapData);
                bool     isHave = false;

                var tableColumns = src.GetColumns(this.STable);
                foreach (DataRow dr in tableColumns.Rows)
                {
                    cb         = new CheckBox();
                    cb.ID      = "CB_Col_" + dr["name"];
                    cb.Checked = this.SColumns == null ? false : this.SColumns.Contains(dr["name"] + ",");

                    //如果已经有该字段,就放弃.
                    if (attrs.Contains(MapAttrAttr.KeyOfEn, dr["name"].ToString()))
                    {
                        continue;
                        cb.Enabled = false;
                    }

                    this.Pub1.AddTR();
                    this.Pub1.AddTD(cb);
                    this.Pub1.AddTD(dr["colid"].ToString());
                    this.Pub1.AddTD(dr["name"].ToString());
                    this.Pub1.AddTD(dr["Desc"].ToString());
                    this.Pub1.AddTD(dr["type"].ToString());
                    this.Pub1.AddTD(Convert.ToInt32(dr["length"]));
                    this.Pub1.AddTREnd();
                }


                this.Pub1.AddTableEnd();
                this.Pub1.AddBR();
                this.Pub1.AddBR();
                this.Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Next, "下一步");
                btn.Click += new EventHandler(btn_Click);
                this.Pub1.Add(btn);
                this.Pub1.AddSpace(1);

                this.Pub1.Add(string.Format("<a href='{0}?Step=1&FK_MapData={1}' class='easyui-linkbutton'>上一步</a>", Request.Url.AbsolutePath, this.FK_MapData));
                this.Pub1.AddBR();
                this.Pub1.AddBR();
                this.Pub1.AddDivEnd();
                this.Pub1.AddDivEnd();
            }
            #endregion 第2步.

            #region 第3步.
            if (this.Step == 3)
            {
                SFDBSrc src = new SFDBSrc(this.FK_SFDBSrc);
                this.Pub1.AddTable(); // ("id='maintable' class='Table' cellSpacing='0' cellPadding='0' border='0' style='width:100%'");
                this.Pub1.AddTDGroupTitle("序");
                this.Pub1.AddTDGroupTitle("字段名");
                this.Pub1.AddTDGroupTitle("中文描述");
                this.Pub1.AddTDGroupTitle("数据类型");
                this.Pub1.AddTDGroupTitle("逻辑类型");
                this.Pub1.AddTDGroupTitle("绑定值(双击选择)");
                this.Pub1.AddTDGroupTitle("最大长度");
                this.Pub1.AddTDGroupTitle("顺序");
                this.Pub1.AddTREnd();

                var tableColumns = src.GetColumns(this.STable);
                var idx          = 0;

                foreach (DataRow dr in tableColumns.Rows)
                {
                    if (this.SColumns.Contains(dr["name"] + ",") == false)
                    {
                        continue;
                    }

                    string typeString = dr["type"].ToString().ToLower();
                    int    mydatatype = 1;
                    if (typeString.Contains("int"))
                    {
                        mydatatype = BP.DA.DataType.AppInt;
                    }
                    if (typeString.Contains("float"))
                    {
                        mydatatype = BP.DA.DataType.AppFloat;
                    }
                    if (typeString.Contains("double"))
                    {
                        mydatatype = BP.DA.DataType.AppDouble;
                    }

                    idx++;
                    this.Pub1.AddTR();
                    this.Pub1.AddTDIdx(idx);
                    this.Pub1.AddTD(dr["name"].ToString());

                    //中文描述.
                    var tb = new TB();
                    tb.ID      = "TB_Desc_" + dr["name"];
                    tb.Columns = 20;
                    tb.Text    = dr["Desc"].ToString();
                    if (tb.Text.Length == 0)
                    {
                        tb.Text = dr["name"].ToString();
                    }
                    this.Pub1.AddTD(tb);

                    //数据类型.
                    var ddl = new DDL();
                    ddl.ID = "DDL_DBType_" + dr["name"];
                    ddl.SelfBindSysEnum(MapAttrAttr.MyDataType);
                    ddl.SetSelectItem(mydatatype); //设置选择的项目.
                    this.Pub1.AddTD(ddl);

                    //逻辑类型.
                    ddl    = new DDL();
                    ddl.ID = "DDL_LogicType_" + dr["name"];
                    ddl.SelfBindSysEnum(MapAttrAttr.LGType);
                    this.Pub1.AddTD(ddl);


                    //绑定的逻辑类型.
                    tb         = new TB();
                    tb.ID      = "TB_BindKey_" + dr["name"];
                    tb.Columns = 30;
                    tb.Text    = dr["name"].ToString();
                    tb.Attributes["ondblclick"] = "OpenSelectBindKey(this)";
                    this.Pub1.AddTD(tb);

                    //最大长度.
                    //绑定的逻辑类型.
                    tb         = new TB();
                    tb.ID      = "TB_Len_" + dr["name"];
                    tb.Columns = 5;
                    tb.Text    = dr["length"].ToString();
                    this.Pub1.AddTD(tb);

                    this.Pub1.AddTDBegin("style='text-align:center'");
                    var hiddenIdx = new HiddenField();
                    hiddenIdx.ID    = "HID_Idx_" + dr["name"];
                    hiddenIdx.Value = idx.ToString();
                    this.Pub1.Add(hiddenIdx);

                    this.Pub1.Add("<a href='javascript:void(0)' onclick='up(this, 6)' class='easyui-linkbutton' data-options=\"iconCls:'icon-up'\"></a>&nbsp;");
                    this.Pub1.Add("<a href='javascript:void(0)' onclick='down(this, 6)' class='easyui-linkbutton' data-options=\"iconCls:'icon-down'\"></a>");

                    this.Pub1.AddTDEnd();
                    this.Pub1.AddTREnd();
                }

                this.Pub1.AddTableEnd();
                this.Pub1.AddBR();
                this.Pub1.AddBR();
                this.Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Save, "导入字段,生成表单");
                btn.Click += new EventHandler(btn_Save_Click);
                this.Pub1.Add(btn);
                this.Pub1.AddSpace(1);

                this.Pub1.Add(string.Format("<a href='{0}' class='easyui-linkbutton'>上一步</a>", Request.Url.ToString().Replace("Step=3", "Step=2")));
                this.Pub1.AddBR();
                this.Pub1.AddBR();
            }
            #endregion 第3步.
        }
Ejemplo n.º 15
0
        void btn_Click(object sender, EventArgs e)
        {
            LinkBtn btn = sender as LinkBtn;

            if (btn.ID.StartsWith(NamesOfBtn.DataCheck + "_"))
            {
                #region //检查正确性
                string  table = btn.ID.Substring((NamesOfBtn.DataCheck + "_").Length);
                string  sql   = Pub1.GetTBByID("TB_" + table).Text;
                string  srcno = Pub1.GetDDLByID("DDL_DBSrcs").SelectedItemStringVal;
                SFDBSrc src   = new SFDBSrc(srcno);
                string  error = CheckSQL(src, gvarSModel.Val, table, sql);

                if (string.IsNullOrWhiteSpace(error))
                {
                    //如果配置正确,则把此次的SQL语句存储上
                    GloVar gvar = gvars.GetEntityByKey(table + "_Temp") as GloVar;
                    gvar.Val = sql;
                    gvar.Update();

                    Alert("配置正确!");
                }
                else
                {
                    Alert("成功获取数据,但有如下错误:<br />" + error.TrimEnd(','), "error");
                }
                #endregion
            }
            else if (btn.ID.StartsWith(NamesOfBtn.Open + "_"))
            {
                #region //打开数据源
                string    item  = btn.ID.Substring((NamesOfBtn.Open + "_").Length);
                string    value = Pub1.GetTBByID("TB_" + item).Text;
                string    srcno = Pub1.GetDDLByID("DDL_DBSrcs").SelectedItemStringVal;
                SFDBSrc   src   = new SFDBSrc(srcno);
                DataTable dt    = null;

                try
                {
                    dt = src.RunSQLReturnTable(value, 0, 100);
                }
                catch (Exception ex)
                {
                    Alert(ex.Message, "error");
                    return;
                }

                Dictionary <string, string> coldefs = gvarSModel.Val == "1" ? _oneones[item] : _onemores[item];

                Pub2.Add("<table class='easyui-datagrid' data-options='fit:true'>");

                Pub2.Add("  <thead>");
                Pub2.Add("      <tr>");

                foreach (KeyValuePair <string, string> coldef in coldefs)
                {
                    Pub2.Add(string.Format("          <th data-options=\"field:'{0}'\">{0}</th>", coldef.Key));
                }

                Pub2.Add("      </tr>");
                Pub2.Add("  </thead>");

                Pub2.Add("  <tbody>");

                foreach (DataRow row in dt.Rows)
                {
                    Pub2.Add("      <tr>");

                    foreach (KeyValuePair <string, string> coldef in coldefs)
                    {
                        if (dt.Columns.Contains(coldef.Key))
                        {
                            Pub2.Add(string.Format("          <td>{0}</td>",
                                                   row[coldef.Key] == null || row[coldef.Key] == DBNull.Value
                                                       ? ""
                                                       : row[coldef.Key]));
                        }
                        else
                        {
                            Pub2.Add("          <td></td>");
                        }
                    }

                    Pub2.Add("      </tr>");
                }

                Pub2.Add("  </tbody>");

                Pub2.Add("</table>");
                ClientScript.RegisterClientScriptBlock(this.GetType(), "showwindow", "$(function(){$('#datawin').window('open');});",
                                                       true);
                #endregion
            }
            else
            {
                switch (btn.ID)
                {
                case NamesOfBtn.Save:
                    #region     //保存并继续
                    switch (Step)
                    {
                    case 1:
                        GloVar gvar = new GloVar("StructureModel");
                        gvar.Val = Pub1.GetRadioButtonListByID("Rads_StructureModel").SelectedValue;
                        gvar.Update();
                        Response.Redirect("Integration.aspx?step=2", true);
                        break;

                    case 2:
                        gvar     = new GloVar("StructureMngKind");
                        gvar.Val = Pub1.GetRadioButtonListByID("Rads_StructureMngKind").SelectedValue;
                        gvar.Update();
                        Response.Redirect("Integration.aspx?step=3", true);
                        break;

                    case 3:
                        gvar     = new GloVar("StructureSource");
                        gvar.Val = Pub1.GetRadioButtonListByID("Rads_StructureSource").SelectedValue;
                        gvar.Update();
                        Response.Redirect("Integration.aspx?step=4", true);
                        break;
                    }
                    #endregion
                    break;

                case NamesOfBtn.Back:
                    #region     //上一步
                    switch (Step)
                    {
                    case 2:
                        Response.Redirect("Integration.aspx?step=1", true);
                        break;

                    case 3:
                        Response.Redirect("Integration.aspx?step=2", true);
                        break;

                    case 4:
                        Response.Redirect("Integration.aspx?step=3", true);
                        break;
                    }
                    #endregion
                    break;

                case NamesOfBtn.Setting:
                    #region     //设置全部
                    //循环文本控件,保存所有SQL
                    Dictionary <string, Dictionary <string, string> > coldefs = gvarSModel.Val == "1" ? _oneones : _onemores;
                    SFDBSrc src      = new SFDBSrc(gvarDBSrc.Val);
                    SFDBSrc srcLocal = new SFDBSrc("local");

                    TB            tb           = null;
                    GloVar        tvar         = null;
                    string        sql          = string.Empty;
                    string        exists       = string.Empty;
                    string        successViews = string.Empty;
                    string        errorViews   = string.Empty;
                    string        error        = string.Empty;
                    int           successIdx   = 0;
                    int           errorIdx     = 0;
                    List <string> existsObjs   = new List <string>();

                    #region checkSqls
                    Dictionary <string, string> checkSqlsOneOne = new Dictionary <string, string>
                    {
                        {
                            "Port_Emp,Port_Dept",
                            "SELECT * FROM {Port_Emp} t1 WHERE t1.FK_Dept NOT IN (SELECT t2.No FROM {Port_Dept} t2)"
                        },
                        {
                            "Port_Station,Sys_Enum",
                            "SELECT * FROM {Port_Station} t1 WHERE t1.StaGrade NOT IN ({Sys_Enum})"
                        },
                        {
                            "Port_EmpStation,Port_Emp",
                            "SELECT * FROM {Port_EmpStation} t1 WHERE t1.FK_Emp NOT IN (SELECT t2.No FROM {Port_Emp} t2)"
                        },
                        {
                            "Port_EmpStation,Port_Station",
                            "SELECT * FROM {Port_EmpStation} t1 WHERE t1.FK_Station NOT IN (SELECT t2.No FROM {Port_Station} t2)"
                        },
                        {
                            "Port_EmpDept,Port_Emp",
                            "SELECT * FROM {Port_EmpDept} t1 WHERE t1.FK_Emp NOT IN (SELECT t2.No FROM {Port_Emp} t2)"
                        },
                        {
                            "Port_EmpDept,Port_Dept",
                            "SELECT * FROM {Port_EmpDept} t1 WHERE t1.FK_Dept NOT IN (SELECT t2.No FROM {Port_Dept} t2)"
                        }
                    };
                    Dictionary <string, string> checkSqlsOneMore = new Dictionary <string, string>
                    {
                        {
                            "Port_Station,Port_StationType",
                            "SELECT * FROM {Port_Station} ps WHERE ps.FK_StationType NOT IN (SELECT pst.No FROM {Port_StationType} pst)"
                        },
                        {
                            "Port_DeptDuty,Port_Dept",
                            "SELECT * FROM {Port_DeptDuty} pdd WHERE pdd.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)"
                        },
                        {
                            "Port_DeptDuty,Port_Duty",
                            "SELECT * FROM {Port_DeptDuty} pdd WHERE pdd.FK_Duty NOT IN (SELECT pd.No FROM {Port_Duty} pd)"
                        },
                        {
                            "Port_DeptStation,Port_Dept",
                            "SELECT * FROM {Port_DeptStation} pds WHERE pds.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)"
                        },
                        {
                            "Port_DeptStation,Port_Station",
                            "SELECT * FROM {Port_DeptStation} pds WHERE pds.FK_Station NOT IN (SELECT ps.No FROM {Port_Station} ps)"
                        },
                        {
                            "Port_Emp,Port_Dept",
                            "SELECT * FROM {Port_Emp} pe WHERE pe.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)"
                        },
                        {
                            "Port_Emp,Port_Duty",
                            "SELECT * FROM {Port_Emp} pe WHERE pe.FK_Duty NOT IN (SELECT pd.No FROM {Port_Duty} pd)"
                        },
                        {
                            "Port_DeptEmpStation,Port_Dept",
                            "SELECT * FROM {Port_DeptEmpStation} pdes WHERE pdes.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)"
                        },
                        {
                            "Port_DeptEmpStation,Port_Station",
                            "SELECT * FROM {Port_DeptEmpStation} pdes WHERE pdes.FK_Station NOT IN (SELECT ps.No FROM {Port_Station} ps)"
                        },
                        {
                            "Port_DeptEmpStation,Port_Emp",
                            "SELECT * FROM {Port_DeptEmpStation} pdes WHERE pdes.FK_Emp NOT IN (SELECT pe.No FROM {Port_Emp} pe)"
                        },
                        {
                            "Port_DeptEmp,Port_Dept",
                            "SELECT * FROM {Port_DeptEmp} pde WHERE pde.FK_Dept NOT IN (SELECT pd.No FROM {Port_Dept} pd)"
                        },
                        {
                            "Port_DeptEmp,Port_Emp",
                            "SELECT * FROM {Port_DeptEmp} pde WHERE pde.FK_Emp NOT IN (SELECT pe.No FROM {Port_Emp} pe)"
                        },
                        {
                            "Port_DeptEmp,Port_Duty",
                            "SELECT * FROM {Port_DeptEmp} pde WHERE pde.FK_Duty NOT IN (SELECT pd.No FROM {Port_Duty} pd)"
                        }
                    };
                    #endregion

                    Dictionary <string, string> checkSqls = gvarSModel.Val == "1" ? checkSqlsOneOne : checkSqlsOneMore;

                    try
                    {
                        #region     //保存配置,并初步检查各数据表返回数据的有效性
                        foreach (KeyValuePair <string, Dictionary <string, string> > def in coldefs)
                        {
                            tb       = Pub1.GetTBByID("TB_" + def.Key);
                            tvar     = gvars.GetEntityByKey(def.Key + "_Temp") as GloVar;
                            tvar.Val = tb.Text;
                            tvar.Update();

                            error = CheckSQL(src, gvarSModel.Val, def.Key, tvar.Val);

                            if (string.IsNullOrWhiteSpace(error))
                            {
                                successViews += (++successIdx) + ". " + def.Key + "<br />";
                            }
                            else
                            {
                                errorViews += (++errorIdx) + ". " + def.Key + "<br />&nbsp;&nbsp;&nbsp;错误信息:" + error + "<br />";
                            }
                        }

                        if (!string.IsNullOrWhiteSpace(errorViews))
                        {
                            Alert("配置SQL检查结果:<br />配置正确的表有:<br />"
                                  + successViews
                                  + "<br />配置错误的表有:<br />"
                                  + errorViews
                                  + "<br />请检查后重新设置!", "error");
                            return;
                        }
                        #endregion

                        #region     //检查admin,如果没有admin则允许创建视图;如果admin不属于顶级部门,则也不允许创建视图
                        sql = "SELECT * FROM {Port_Emp} pe WHERE pe.No = 'admin'".Replace("{Port_Emp}",
                                                                                          "(" + (gvars.GetEntityByKey("Port_Emp_Temp") as GloVar).Val + ")");

                        DataTable dt = src.RunSQLReturnTable(sql);
                        if (dt.Rows.Count == 0)
                        {
                            Alert("配置的Port_Emp中,必须含有No='admin'的超级管理员数据!", "error");
                            return;
                        }

                        if (dt.Rows[0]["FK_Dept"] == null || dt.Rows[0]["FK_Dept"] == DBNull.Value || string.IsNullOrWhiteSpace(dt.Rows[0]["FK_Dept"].ToString()))
                        {
                            Alert("配置的Port_Emp中,No='admin'的超级管理员数据中,FK_Dept部门字段必须有值!", "error");
                            return;
                        }

                        sql = "SELECT pd.ParentNo FROM {Port_Dept} pd WHERE pd.No = '" + dt.Rows[0]["FK_Dept"] + "'";
                        dt  = src.RunSQLReturnTable(sql.Replace("{Port_Dept}",
                                                                "(" + (gvars.GetEntityByKey("Port_Dept_Temp") as GloVar).Val + ")"));

                        if (dt.Rows.Count == 0)
                        {
                            Alert("配置的Port_Emp中,No='admin'的超级管理员数据中,FK_Dept部门不存在!", "error");
                            return;
                        }

                        if (dt.Rows[0][0] != null && dt.Rows[0][0] != DBNull.Value)
                        {
                            sql = "SELECT * FROM {Port_Dept} pd WHERE pd.No = '" + dt.Rows[0][0] + "'";
                            dt  = src.RunSQLReturnTable(sql.Replace("{Port_Dept}",
                                                                    "(" + (gvars.GetEntityByKey("Port_Dept_Temp") as GloVar).Val + ")"));

                            if (dt.Rows.Count > 0)
                            {
                                Alert("配置的Port_Emp中,No='admin'的超级管理员数据中,FK_Dept部门必须是顶级部门!", "error");
                                return;
                            }
                        }
                        #endregion

                        #region     //根据SQL,检查数据完整性,有错误数据,给出提示
                        string[] tables = null;
                        foreach (KeyValuePair <string, string> cs in checkSqls)
                        {
                            tables = cs.Key.Split(',');
                            sql    = cs.Value;

                            foreach (string table in tables)
                            {
                                if (!sql.Contains("{" + table + "}"))
                                {
                                    continue;
                                }

                                if (table == "Sys_Enum")
                                {
                                    SysEnums enums  = new SysEnums("StaGrade");
                                    string   grades = string.Empty;

                                    foreach (SysEnum en in enums)
                                    {
                                        grades += en.IntKey + ",";
                                    }

                                    sql = sql.Replace("{" + table + "}", grades.TrimEnd(','));
                                }
                                else
                                {
                                    sql = sql.Replace("{" + table + "}",
                                                      "(" + (gvars.GetEntityByKey(table + "_Temp") as GloVar).Val + ")");
                                }
                            }

                            dt = src.RunSQLReturnTable(sql);

                            if (dt.Rows.Count > 0)
                            {
                                errorViews += (++errorIdx) + ". " + sql + "<br />";
                            }
                        }
                        #endregion

                        #region     //创建两方数据库的组织结构视图

                        GloVar gvar = null;
                        foreach (KeyValuePair <string, Dictionary <string, string> > def in coldefs)
                        {
                            tvar     = gvars.GetEntityByKey(def.Key + "_Temp") as GloVar;
                            gvar     = gvars.GetEntityByKey(def.Key) as GloVar;
                            gvar.Val = tvar.Val;
                            gvar.Update();

                            //判断数据源上是否已经存在同名的表或视图
                            exists = src.IsExistsObj(def.Key);
                            if (!string.IsNullOrEmpty(exists))
                            {
                                if (exists == "TABLE" || exists == "VIEW")
                                {
                                    src.Rename(exists, def.Key,
                                               def.Key + "_Bak" + DateTime.Now.ToString("MMddHHmmss"));
                                }
                                existsObjs.Add(def.Key);
                            }

                            //在数据源所在数据库上建立视图
                            sql = "CREATE VIEW " + def.Key + Environment.NewLine +
                                  "AS" + Environment.NewLine + tvar.Val;
                            src.RunSQL(sql);

                            //在CCFlow主库上建立与数据源库视图的联接,也建一个视图
                            //判断主数据库里是否已经存在同名的表或视图,如果有,则改名
                            exists = srcLocal.IsExistsObj(def.Key);
                            if (!string.IsNullOrEmpty(exists))
                            {
                                if (exists == "TABLE" || exists == "VIEW")
                                {
                                    srcLocal.Rename(exists, def.Key, def.Key + "_Bak" + DateTime.Now.ToString("MMddHHmmss"));
                                }
                            }

                            sql = string.Format("CREATE VIEW {0} AS SELECT * FROM {1}", def.Key, src.GetLinkedServerObjName(def.Key));
                            BP.DA.DBAccess.RunSQL(sql);
                        }
                        #endregion

                        //todo:oneone下部门人员表SQL自动写入,待处理
                        //tvar = gvars.GetEntityByKey("StructureDBOver") as GloVar;
                        //tvar.Val = true.ToString();
                        //tvar.Update();

                        if (!string.IsNullOrWhiteSpace(errorViews))
                        {
                            Alert("创建成功,但检查到数据完整性有以下错误:<br />"
                                  + errorViews, "error");
                        }
                        else
                        {
                            Alert("创建成功!");
                        }
                    }
                    catch (Exception ex)
                    {
                        Alert(ex.Message, "error");
                    }
                    #endregion
                    break;
                }
            }
        }
Ejemplo n.º 16
0
        /// <summary>
        /// 与业务表数据同步
        /// </summary>
        /// <returns></returns>
        public string DTSBTable_Save()
        {
            Flow flow = new Flow(this.FK_Flow);

            BP.WF.Template.FlowDTSWay dtsWay = (BP.WF.Template.FlowDTSWay) this.GetRequestValInt("RB_DTSWay");

            flow.DTSWay = dtsWay;
            if (flow.DTSWay == FlowDTSWay.None)
            {
                flow.Update();
                return("保存成功.");
            }

            flow.DTSDBSrc  = this.GetRequestVal("DDL_DBSrc");
            flow.DTSBTable = this.GetRequestVal("DDL_Table");

            DTSField field = (DTSField)this.GetRequestValInt("DTSField");

            if (field == 0)
            {
                field = DTSField.SameNames;
            }
            flow.DTSField = field;

            SFDBSrc s = new SFDBSrc("local");

            if (field == DTSField.SameNames)
            {
                DataTable dt = s.GetColumns(flow.PTable);

                s = new SFDBSrc(flow.DTSDBSrc);                // this.src);
                DataTable ywDt = s.GetColumns(flow.DTSBTable); // this.ywTableName);

                string str   = "";
                string ywStr = "";
                foreach (DataRow ywDr in ywDt.Rows)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (ywDr["No"].ToString().ToUpper() == dr["No"].ToString().ToUpper())
                        {
                            if (dr["No"].ToString().ToUpper() == "OID")
                            {
                                flow.DTSBTablePK = "OID";
                            }
                            str   += dr["No"].ToString() + ",";
                            ywStr += ywDr["No"].ToString() + ",";
                        }
                    }
                }

                if (!DataType.IsNullOrEmpty(str))
                {
                    flow.DTSFields = str.TrimEnd(',') + "@" + ywStr.TrimEnd(',');
                }
                else
                {
                    PubClass.Alert("未检测到业务主表【" + flow.PTable + "】与表【" + flow.DTSBTable + "】有相同的字段名.");
                    return("");//不执行保存
                }
            }
            else//按设置的字段匹配   检查在
            {
                try
                {
                    s = new SFDBSrc("local");
                    string str = flow.DTSFields;

                    string[] arr = str.Split('@');


                    string sql = "SELECT " + arr[0] + " FROM " + flow.PTable;

                    s.RunSQL(sql);

                    s = new SFDBSrc(flow.DTSDBSrc);

                    sql = "SELECT " + arr[1] + ", " + flow.DTSBTablePK
                          + " FROM " + flow.DTSBTable;

                    s.RunSQL(sql);
                }
                catch
                {
                    //PubClass.Alert(ex.Message);
                    PubClass.Alert("设置的字段有误.【" + flow.DTSFields + "】");
                    return("");//不执行保存
                }
            }
            flow.Update();
            return(flow.ToJson());
        }
Ejemplo n.º 17
0
        protected void Page_Load(object sender, EventArgs e)
        {
            #region Step = 1

            if (this.Step == 1)
            {
                BP.Sys.SFDBSrcs ens = new BP.Sys.SFDBSrcs();
                ens.RetrieveAll();

                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "第1步:选择下拉框数据来源类型");
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDBegin();
                Pub1.AddUL("class='navlist'");

                this.Pub1.AddLi("<a href='/WF/MapDef/SFTable.aspx?DoType=New&MyPK=" + this.MyPK + "&Idx=" + this.Idx + "&FromApp=SL' ><b><img src='./Img/Table.png' border=0 style='width:17px;height:17px;' />外键型表或视图</b></a> -  比如:岗位、税种、行业、科目,本机上一个表组成一个下拉框。");
                this.Pub1.AddLi("<a href='/WF/MapDef/SFSQL.aspx?DoType=New&MyPK=" + this.MyPK + "&Idx=" + this.Idx + "&FromApp=SL'><b><img src='./Img/View.png' border=0  style='width:17px;height:17px;' />外部表SQL数据源</b></a> -  比如:配置一个SQL通过数据库连接或获取的外部数据,组成一个下拉框。");
                this.Pub1.AddLi("<a href='/WF/MapDef/SFWS.aspx?DoType=AddSFWebServeces&MyPK=" + this.MyPK + "&FType=Class&Idx=" + this.Idx + "&GroupField=" + this.GroupField + "&FromApp=SL'><b><img src='./Img/WS.png' border=0 />WebServices数据</b></a> -  比如:通过调用Webservices接口获得数据,组成一个下拉框。");

                //// Pub1.AddLi("<div><a href='SFGuide.aspx?Step=12&FK_SFDBsrc=local'><img src='../../Img/New.gif' align='middle' /><span>创建本地编码字典表</span></a></div>");
                // foreach (BP.Sys.SFDBSrc item in ens)
                // {
                //     Pub1.AddLi("<div><a href='SFGuide.aspx?Step=2&FK_SFDBSrc=" + item.No + "'><span class='nav'>" +item.IP+ item.No + "  -  " + item.Name + "</span></a></div>");
                // }

                // this.Pub1.AddFieldSet("新增下拉框(外键、外部表、WebServices)字段(通常只有编号名称两个列)");
                // this.Pub1.AddUL();
                // this.Pub1.AddLi("<a href='Do.aspx?DoType=AddSFTable&MyPK=" + this.MyPK + "&FType=Class&Idx=" + this.Idx + "&GroupField=" + this.GroupField + "'><b>外键型</b></a> -  比如:岗位、税种、行业、科目,本机上一个表组成一个下拉框。");
                // this.Pub1.AddLi("<a href='Do.aspx?DoType=AddSFSQL&MyPK=" + this.MyPK + "&FType=Class&Idx=" + this.Idx + "&GroupField=" + this.GroupField + "'><b>外部表</b></a> -  比如:配置一个SQL通过数据库连接或获取的外部数据,组成一个下拉框。");
                // this.Pub1.AddLi("<a href='Do.aspx?DoType=AddSFWebServeces&MyPK=" + this.MyPK + "&FType=Class&Idx=" + this.Idx + "&GroupField=" + this.GroupField + "'><b>WebServices</b></a> -  比如:通过调用Webservices接口获得数据,组成一个下拉框。");
                // this.Pub1.AddULEnd();
                // this.Pub1.AddFieldSetEnd();

                //创建.
                //Pub1.AddLi("<div><a href=\"javascript:WinOpen('../RefFunc/UIEn.aspx?EnsName=BP.Sys.SFDBSrcs')\" ><img src='../../Img/New.gif' align='middle' /><span class='nav'>新建数据源</span></a></div>");
                //Pub1.AddLi("<div><a href='SFGuide.aspx?Step=22'><img src='../../Img/New.gif' align='middle' /><span class='nav'>新建WebService数据源</span></a></div>");


                Pub1.AddULEnd();
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTREnd();


                Pub1.AddTableEnd();
            }
            #endregion

            #region Step = 2

            if (this.Step == 2)
            {
                SFDBSrc src = new SFDBSrc(this.FK_SFDBSrc);

                Pub1.Add("<div class='easyui-layout' data-options=\"fit:true\">");
                Pub1.Add(string.Format("<div data-options=\"region:'west',split:true,title:'选择 {0} 表/视图'\" style='width:200px;'>",
                                       src.No));

                var lb = new LB();
                lb.ID = "LB_Table";
                lb.BindByTableNoName(src.GetTables());
                lb.Style.Add("width", "100%");
                lb.Style.Add("height", "100%");
                lb.AutoPostBack          = true;
                lb.SelectedIndexChanged += new EventHandler(lb_SelectedIndexChanged);
                Pub1.Add(lb);

                Pub1.AddDivEnd();

                Pub1.Add("<div data-options=\"region:'center',title:'第2步:请填写基础信息'\" style='padding:5px;'>");
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");

                var dbType = src.DBSrcType;
                if (dbType == DBSrcType.Localhost)
                {
                    switch (SystemConfig.AppCenterDBType)
                    {
                    case DBType.MSSQL:
                        dbType = DBSrcType.SQLServer;
                        break;

                    case DBType.Oracle:
                        dbType = DBSrcType.Oracle;
                        break;

                    case DBType.MySQL:
                        dbType = DBSrcType.MySQL;
                        break;

                    case DBType.Informix:
                        dbType = DBSrcType.Informix;
                        break;

                    default:
                        throw new Exception("没有涉及到的连接测试类型...");
                    }
                }

                var islocal = (src.DBSrcType == DBSrcType.Localhost).ToString().ToLower();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "值(编号):");
                var ddl = new DDL();
                ddl.ID = "DDL_ColValue";
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTDBegin();
                Pub1.Add(ddl);
                Pub1.Add("&nbsp;编号列,比如:类别编号");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("标签(名称):");
                ddl    = new DDL();
                ddl.ID = "DDL_ColText";
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTDBegin();
                Pub1.Add(ddl);
                Pub1.Add("&nbsp;显示的列,比如:类别名称");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("父结点值(字段):");
                ddl    = new DDL();
                ddl.ID = "DDL_ColParentNo";
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTDBegin();
                Pub1.Add(ddl);
                Pub1.Add("&nbsp;如果是树类型实体,该列设置有效,比如:上级类别编号");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("字典表类型:");

                ddl    = new DDL();
                ddl.ID = "DDL_CodeStruct";
                ddl.SelfBindSysEnum(SFTableAttr.CodeStruct);
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTD(ddl);
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("查询语句:");
                var tb = new TB();
                tb.ID       = "TB_SelectStatement";
                tb.TextMode = TextBoxMode.MultiLine;
                tb.Columns  = 60;
                tb.Rows     = 10;
                tb.Style.Add("width", "99%");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("<br />&nbsp;说明:查询语句可以修改,但请保证查询语句的准确性及有效性!");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Next, "下一步");
                btn.Click += new EventHandler(btn_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");

                Pub1.AddDivEnd();
                Pub1.AddDivEnd();

                if (!IsPostBack && lb.Items.Count > 0)
                {
                    lb.SelectedIndex = 0;
                    ShowSelectedTableColumns();
                }
            }
            #endregion

            #region Step = 12

            if (this.Step == 12)
            {
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("colspan='2'", "第2步:创建");
                Pub1.AddTREnd();

                TextBox tb = new TextBox();
                tb.ID = "TB_No";
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "表英文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;必须以字母或者下画线开头");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.Name;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "表中文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;显示的标签");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.TableDesc;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "描述:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;表描述");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Apply, "执行创建");
                btn.Click += new EventHandler(btn_Create_Local_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");
            }
            #endregion

            #region Step = 22

            if (this.Step == 22)
            {
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("colspan='2'", "第2步:创建本地WebService数据源表");
                Pub1.AddTREnd();

                TextBox tb = new TextBox();
                tb.ID = "TB_No";
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "WebService数据源编号:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;必须以字母或者下画线开头,比如:HR,CRM");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.Name;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "WebService数据源名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;显示的数据源名称,比如:人力资源系统,客户关系管理系统.");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.TableDesc;
                tb.Style.Add("width", "300px");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "WebService连接Url:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;WebService地址,比如:http://127.0.0.1/CCFormTester.asmx");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.SrcTable;
                tb.Style.Add("width", "300px");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "WebService接口名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;比如:GetEmps");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.SelectStatement;
                tb.Style.Add("width", "300px");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "WebService接口参数:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("格式说明");
                Pub1.AddTDDoc("如:WorkId=@WorkID&FK_Flow=@FK_Flow&FK_Node=@FK_Node&SearchType=1,带@的参数值在运行时自动使用发起流程的相关参数值替换,而不带@的参数值使用后面的赋值;参数个数与WebServices接口方法的参数个数一致,且顺序一致,且值均为字符类型。");
                Pub1.AddTREnd();


                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Apply, "执行创建");
                btn.Click += new EventHandler(btn_Create_WebService_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");
            }

            #endregion

            #region Step = 3

            if (this.Step == 3)
            {
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("colspan='2'", "第3步:创建");
                Pub1.AddTREnd();

                TextBox tb = new TextBox();
                tb.ID = "TB_No";
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "表英文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;必须以字母或者下画线开头");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.Name;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "表中文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;显示的标签");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.TableDesc;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "描述:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;表描述");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Apply, "执行创建");
                btn.Click += new EventHandler(btn_Create_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");
            }
            #endregion
        }
Ejemplo n.º 18
0
        public void BindStep1()
        {
            this.Pub1.AddTable();
            this.Pub1.AddCaption("表单创建向导:填写表单基础信息");

            SysEnum se = new SysEnum(MapDataAttr.FrmType, this.FrmType);

            this.Pub1.AddTR();
            this.Pub1.AddTD("表单类型");
            this.Pub1.AddTD(se.Lab);
            this.Pub1.AddTD("返回上一步可以更改");
            this.Pub1.AddTREnd();

            this.Pub1.AddTR();
            this.Pub1.AddTD("数据源");
            BP.Sys.SFDBSrc srcs = new SFDBSrc(this.DBSrc);
            this.Pub1.AddTD(srcs.Name);
            this.Pub1.AddTD("您可以把表单创建不同的数据源上.");
            this.Pub1.AddTREnd();


            this.Pub1.AddTR();
            this.Pub1.AddTD("创建路径");
            //更改绑定样式 qin
            //BP.Sys.SysFormTrees trees = new SysFormTrees();

            //去除对应数据源根目录
            //trees.Retrieve(SysFormTreeAttr.DBSrc, this.DBSrc, SysFormTreeAttr.IsDir, "0");
            DataTable dt = DBAccess.RunSQLReturnTable("SELECT No,Name,ParentNo FROM Sys_FormTree WHERE DBSrc='local' AND IsDir='0'");

            BP.Web.Controls.DDL ddl = new BP.Web.Controls.DDL();
            ddl.ID = "DDL_FrmTree";
            BP.Web.Controls.DDL.MakeTree(dt, "ParentNo", "0", "No", "Name", ddl, -1);
            //ddl.Bind(trees, this.DBSrc);
            this.Pub1.AddTD(ddl);
            this.Pub1.AddTD("表单类别.");
            this.Pub1.AddTREnd();


            this.Pub1.AddTR();
            this.Pub1.AddTD("<font color='Red'>*</font>表单名称");
            TextBox tb = new TextBox();

            tb.ID           = "TB_Name";
            tb.Columns      = 90;
            tb.AutoPostBack = true;
            tb.TextChanged += new EventHandler(tb_TextChanged);
            this.Pub1.AddTD(tb);
            this.Pub1.AddTD("1到30个字符");
            this.Pub1.AddTREnd();

            this.Pub1.AddTR();
            this.Pub1.AddTD("<font color='Red'>*</font>表单编号");
            tb         = new TextBox();
            tb.ID      = "TB_No";
            tb.Columns = 90;
            this.Pub1.AddTD(tb);
            this.Pub1.AddTD("以字母或者下划线开头,不能包含中文或者其他特殊字符.");
            this.Pub1.AddTREnd();

            this.Pub1.AddTR();
            this.Pub1.AddTD("<font color='Red'>*</font>数据表");
            tb         = new TextBox();
            tb.ID      = "TB_PTable";
            tb.Columns = 90;

            this.Pub1.AddTD(tb);
            this.Pub1.AddTD("只能以字母或者下划线开头,不能包含中文与其它特殊字符。");
            this.Pub1.AddTREnd();

            #region 快速填写.
            this.Pub1.AddTR();
            this.Pub1.AddTD("快速填写");
            this.Pub1.AddTDBegin();
            RadioButton rb = new RadioButton();
            rb.ID              = "RB0";
            rb.Text            = "生成全拼名称";
            rb.CheckedChanged += new EventHandler(tb_TextChanged);
            rb.Checked         = true;
            rb.AutoPostBack    = true;
            rb.GroupName       = "ss";
            this.Pub1.Add(rb);

            rb                 = new RadioButton();
            rb.ID              = "RB1";
            rb.Text            = "生成简拼名称";
            rb.CheckedChanged += new EventHandler(tb_TextChanged);
            rb.GroupName       = "ss";
            rb.AutoPostBack    = true;
            this.Pub1.Add(rb);
            this.Pub1.AddTDEnd();
            this.Pub1.AddTD("注意:允许多个表单指定同一个表.");
            this.Pub1.AddTREnd();
            #endregion 快速填写.

            #region 表单生成方式.
            this.Pub1.AddTR();
            if ((BP.Sys.FrmType)(this.FrmType) != BP.Sys.FrmType.Url)
            {
                if ((BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.FreeFrm ||
                    (BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.Column4Frm ||
                    (BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.SLFrm)
                {
                    this.Pub1.AddTD("表单生成方式");
                    this.Pub1.AddTDBegin("colspan=2");
                    rb           = new RadioButton();
                    rb.ID        = "RB_FrmGenerMode_0";
                    rb.Text      = "直接生成表单";
                    rb.Checked   = true;
                    rb.GroupName = "s2s";
                    this.Pub1.Add(rb);
                    this.Pub1.AddBR();

                    rb           = new RadioButton();
                    rb.ID        = "RB_FrmGenerMode_1";
                    rb.Text      = "从ccfrom云表单库中选择一个表单模版导入";
                    rb.GroupName = "s2s";
                    this.Pub1.Add(rb);
                    this.Pub1.AddBR();

                    rb           = new RadioButton();
                    rb.ID        = "RB_FrmGenerMode_2";
                    rb.Text      = "从本机或其他数据库的的表导入表结构";
                    rb.GroupName = "s2s";
                    this.Pub1.Add(rb);
                    this.Pub1.AddBR();
                }
                //ExcelFrm,WordFrm 只保留上传
                if ((BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.ExcelFrm ||
                    (BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.WordFrm)
                {
                    this.Pub1.AddTD("<font color='Red'>*</font>上传" + se.Lab + "(默认模版)");
                    this.Pub1.AddTDBegin("colspan=2");

                    FileUpload fUp = new FileUpload();
                    fUp.ID    = "fUpFrm";
                    fUp.Width = 300;

                    this.Pub1.Add("&nbsp;&nbsp;&nbsp;");
                    this.Pub1.Add(fUp);
                }
                this.Pub1.AddTDEnd();
            }
            else
            {
                this.Pub1.AddTD("<font color='Red'>*</font>表单Url");
                this.Pub1.AddTDBegin("colspan=2");
                tb         = new TextBox();
                tb.ID      = "TB_Url";
                tb.Columns = 40;

                this.Pub1.Add(tb);
                this.Pub1.Add("&nbsp;&nbsp;&nbsp;请正确填写表单链接,支持全局变量@Ho");
                this.Pub1.AddTDEnd();
            }
            this.Pub1.AddTREnd();


            //  //ExcelFrm,WordFrm 只保留上传
            //if ((BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.ExcelFrm ||
            //    (BP.Sys.FrmType)(this.FrmType) == BP.Sys.FrmType.WordFrm)
            //{
            //    this.Pub1.AddTRend();
            //    this.Pub1.AddTREnd();
            //}

            #endregion 表单生成方式.

            #region 操作按钮放到table中,布局缩放不会乱
            this.Pub1.AddTR();
            this.Pub1.AddTDBegin(" colspan='3' ");

            Button btn = new Button();
            btn.ID     = "Btn_Save";
            btn.Text   = "下一步";
            btn.Click += new EventHandler(BindStep1_Click);
            this.Pub1.Add(btn);
            this.Pub1.Add("<input type='button' value='返回上一步' onclick='Back();' />");

            this.Pub1.AddTDEnd();
            this.Pub1.AddTREnd();
            #endregion

            this.Pub1.AddTableEnd();
        }
Ejemplo n.º 19
0
        /// <summary>
        /// 获取webservice方法列表
        /// </summary>
        /// <param name="dbsrc">WebService数据源</param>
        /// <returns></returns>
        public Dictionary <string, string> GetWebServiceMethods(SFDBSrc dbsrc)
        {
            if (dbsrc == null || string.IsNullOrWhiteSpace(dbsrc.IP))
            {
                return(new Dictionary <string, string>());
            }

            var wsurl = dbsrc.IP.ToLower();

            if (!wsurl.EndsWith(".asmx") && !wsurl.EndsWith(".svc"))
            {
                throw new Exception("@失败:" + dbsrc.No + " 中WebService地址不正确。");
            }

            wsurl += wsurl.EndsWith(".asmx") ? "?wsdl" : "?singleWsdl";

            #region                                          //解析WebService所有方法列表
            var methods = new Dictionary <string, string>(); //名称Name,全称Text
            var wc      = new WebClient();
            var stream  = wc.OpenRead(wsurl);
            var sd      = ServiceDescription.Read(stream);
            var eles    = sd.Types.Schemas[0].Elements.Values.Cast <XmlSchemaElement>();
            var s       = new StringBuilder();
            XmlSchemaComplexType ctype = null;
            XmlSchemaSequence    seq   = null;
            XmlSchemaElement     res   = null;

            foreach (var ele in eles)
            {
                if (ele == null)
                {
                    continue;
                }

                var resType = string.Empty;
                var mparams = string.Empty;

                //获取接口返回元素
                res = eles.FirstOrDefault(o => o.Name == (ele.Name + "Response"));

                if (res != null)
                {
                    //1.接口名称 ele.Name
                    //2.接口返回值类型
                    ctype = res.SchemaType as XmlSchemaComplexType;
                    seq   = ctype.Particle as XmlSchemaSequence;

                    if (seq != null && seq.Items.Count > 0)
                    {
                        resType = (seq.Items[0] as XmlSchemaElement).SchemaTypeName.Name;
                    }
                    else
                    {
                        continue;// resType = "void";   //去除不返回结果的接口
                    }
                    //3.接口参数
                    ctype = ele.SchemaType as XmlSchemaComplexType;
                    seq   = ctype.Particle as XmlSchemaSequence;

                    if (seq != null && seq.Items.Count > 0)
                    {
                        foreach (XmlSchemaElement pe in seq.Items)
                        {
                            mparams += pe.SchemaTypeName.Name + " " + pe.Name + ", ";
                        }

                        mparams = mparams.TrimEnd(", ".ToCharArray());
                    }

                    methods.Add(ele.Name, string.Format("{0} {1}({2})", resType, ele.Name, mparams));
                }
            }

            stream.Close();
            stream.Dispose();
            wc.Dispose();
            #endregion

            return(methods);
        }
Ejemplo n.º 20
0
        void btn_Create_Local_Click(object sender, EventArgs e)
        {
            SFTable table = new SFTable();

            table             = this.Pub1.Copy(table) as SFTable;
            table.FK_SFDBSrc  = Request.QueryString["FK_SFDBSrc"];
            table.SrcTable    = table.No;
            table.ColumnText  = "Name";
            table.ColumnValue = "No";
            table.IsTree      = false;

            if (BP.DA.DBAccess.IsExitsObject(table.No))
            {
                //判断已经存在的表是否符合NoName规则,如果符合,则自动加入到SFTable中
                var src     = new SFDBSrc(this.FK_SFDBSrc);
                var columns = src.GetColumns(table.No);
                var cols    = new List <string>();

                foreach (DataRow dr in columns.Rows)
                {
                    cols.Add(dr["name"].ToString());
                }

                var regColValue    = cols.FirstOrDefault(o => regs[0].Contains(o.ToLower()));
                var regColText     = cols.FirstOrDefault(o => regs[1].Contains(o.ToLower()));
                var regColParentNo = cols.FirstOrDefault(o => regs[2].Contains(o.ToLower()));

                if (regColValue != null && regColText != null && regColParentNo != null)
                {
                    table.SFTableType = 1;
                    table.IsTree      = true;
                    table.ColumnValue = regColValue;
                    table.ColumnText  = regColText;
                    table.ParentValue = regColParentNo;
                    table.FK_SFDBSrc  = "local";

                    table.Save();
                    EasyUiHelper.AddEasyUiMessagerAndGo(this, "您所创建的“" + table.No + "” 名称的字典表,本地库已经存在,已成功注册!编辑数据……", "提示", "info", "../../MapDef/SFTableEditData.aspx?RefNo=" + table.No);
                }
                else if (regColValue != null && regColText != null)
                {
                    table.SFTableType = 0;
                    table.IsTree      = false;
                    table.ColumnValue = regColValue;
                    table.ColumnText  = regColText;
                    table.ParentValue = null;
                    table.FK_SFDBSrc  = "local";

                    table.Save();
                    EasyUiHelper.AddEasyUiMessagerAndGo(this, "您所创建的“" + table.No + "” 名称的字典表,本地库已经存在,已成功注册!编辑数据……", "提示", "info", "../../MapDef/SFTableEditData.aspx?RefNo=" + table.No);
                }
                else
                {
                    EasyUiHelper.AddEasyUiMessagerAndBack(this, "@对象(" + table.No + ")已经存在.", "错误", "error");
                }

                return;
            }

            var sql = new StringBuilder();

            sql.AppendLine(string.Format("CREATE TABLE dbo.{0}", table.No));
            sql.AppendLine("(");
            sql.AppendLine("No    NVARCHAR(50) NOT NULL PRIMARY KEY,");
            sql.AppendLine("Name  NVARCHAR(100) NULL");
            sql.AppendLine(") ");

            BP.DA.DBAccess.RunSQL(sql.ToString());

            sql.Clear();
            sql.Append("INSERT INTO [dbo].[{0}] ([No], [Name]) VALUES ('0{1}', 'Item{1}')");

            for (var i = 1; i < 4; i++)
            {
                BP.DA.DBAccess.RunSQL(string.Format(sql.ToString(), table.No, i));
            }

            sql.Clear();
            sql.AppendFormat(
                "EXECUTE sp_addextendedproperty N'MS_Description', N'{0}', N'SCHEMA', N'dbo', N'TABLE', N'{1}', NULL, NULL",
                table.Name, table.No);

            BP.DA.DBAccess.RunSQL(sql.ToString());

            table.Save();

            EasyUiHelper.AddEasyUiMessagerAndGo(this, "创建成功!编辑数据……", "提示", "info", "../../MapDef/SFTableEditData.aspx?RefNo=" + table.No);
        }
Ejemplo n.º 21
0
        /// <summary>
        /// 加载选中表的所有列信息
        /// </summary>
        private void ShowSelectedTableColumns()
        {
            var src       = new SFDBSrc(this.FK_SFDBSrc);
            var colTables = src.GetColumns(this.Pub1.GetLBByID("LB_Table").SelectedItemStringVal);

            colTables.Columns.Add("text", typeof(string));

            var    cols = new List <string>();
            string type;
            var    length = 0;

            foreach (DataRow dr in colTables.Rows)
            {
                cols.Add(dr["name"].ToString());
                type   = dr["type"].ToString().ToLower();
                length = int.Parse(dr["length"].ToString());

                dr["text"] = dr["name"] + " (" + (LengthTypes.Contains(type) ?
                                                  (string.Format("{0}{1}", type,
                                                                 (length == -1 || length == 0) ?
                                                                 (MaxTypes.Contains(type) ? "(max)" : "")
                      : string.Format("({0})", length))) : type) + ")";
            }

            //自动判断是否符合规则
            var regColValue    = cols.FirstOrDefault(o => regs[0].Contains(o.ToLower()));
            var regColText     = cols.FirstOrDefault(o => regs[1].Contains(o.ToLower()));
            var regColParentNo = cols.FirstOrDefault(o => regs[2].Contains(o.ToLower()));

            var ddl = this.Pub1.GetDDLByID("DDL_ColValue");

            ddl.Items.Clear();
            ddl.Bind(colTables, "name", "text");

            if (regColValue != null)
            {
                ddl.SetSelectItem(regColValue);
            }

            ddl = this.Pub1.GetDDLByID("DDL_ColText");
            ddl.Items.Clear();
            ddl.Bind(colTables, "name", "text");

            if (regColText != null)
            {
                ddl.SetSelectItem(regColText);
            }

            ddl = this.Pub1.GetDDLByID("DDL_ColParentNo");
            ddl.Items.Clear();
            ddl.Bind(colTables, "name", "text");

            if (regColParentNo != null)
            {
                ddl.SetSelectItem(regColParentNo);
            }

            Pub1.GetTBByID("TB_SelectStatement").Text = string.Empty;
            Pub1.GetDDLByID("DDL_SFTableType").SetSelectItem((regColValue != null && regColText != null &&
                                                              regColParentNo != null)
                                                                  ? "1"
                                                                  : "0");
        }
Ejemplo n.º 22
0
        /// <summary>
        /// 保存数据同步
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void BtnSave_Click(object sender, EventArgs e)
        {
            Flow flow = new Flow(this.FK_Flow);

            #region   步
            if (this.RB_DTSWay0.Checked)
            {
                flow.DTSWay = FlowDTSWay.None;
            }
            #endregion

            #region  步
            if (this.RB_DTSWay1.Checked)
            {
                flow.DTSDBSrc  = this.DDL_DBSrc.SelectedValue;
                flow.DTSBTable = this.DDL_Table.SelectedValue;

                DTSField field = DTSField.SameNames;

                if (this.RB_DTSField1.Checked)
                {
                    field = DTSField.SpecField;
                }

                flow.DTSField = field;

                FlowDTSTime time = FlowDTSTime.AllNodeSend;

                if (this.RB_DTSTime1.Checked)
                {
                    time = FlowDTSTime.SpecNodeSend;
                }

                if (this.RB_DTSTime2.Checked)
                {
                    time = FlowDTSTime.WhenFlowOver;
                }

                if (time == FlowDTSTime.SpecNodeSend)
                {
                    string specNodes = this.HiddenField.Value.TrimEnd(',');
                    if (string.IsNullOrEmpty(specNodes))
                    {
                        PubClass.Alert("没有设置要同步的节点");
                        return;
                    }
                    else
                    {
                        flow.DTSSpecNodes = specNodes.TrimEnd(',');
                    }
                }

                flow.DTSTime = time;
                flow.DTSWay  = FlowDTSWay.Syn;

                #region 字段名相同
                SFDBSrc s = new SFDBSrc("local");
                if (field == DTSField.SameNames)
                {
                    DataTable dt = s.GetColumns(flow.PTable);

                    s = new SFDBSrc(this.DDL_DBSrc.SelectedValue);               // this.src);
                    DataTable ywDt = s.GetColumns(this.DDL_Table.SelectedValue); // this.ywTableName);

                    string str   = "";
                    string ywStr = "";
                    foreach (DataRow ywDr in ywDt.Rows)
                    {
                        foreach (DataRow dr in dt.Rows)
                        {
                            if (ywDr["No"].ToString().ToUpper() == dr["No"].ToString().ToUpper())
                            {
                                if (dr["No"].ToString().ToUpper() == "OID")
                                {
                                    flow.DTSBTablePK = "OID";
                                }
                                str   += dr["No"].ToString() + ",";
                                ywStr += ywDr["No"].ToString() + ",";
                            }
                        }
                    }

                    if (!string.IsNullOrEmpty(str))
                    {
                        flow.DTSFields = str.TrimEnd(',') + "@" + ywStr.TrimEnd(',');
                    }
                    else
                    {
                        PubClass.Alert("未检测到业务主表【" + flow.PTable + "】与表【" + this.DDL_Table.SelectedValue + "】有相同的字段名.");
                        return;//不执行保存
                    }
                }
                else//按设置的字段匹配   检查在
                {
                    try
                    {
                        s = new SFDBSrc("local");
                        string str = flow.DTSFields;

                        string[] arr = str.Split('@');


                        string sql = "SELECT " + arr[0] + " FROM " + flow.PTable;

                        s.RunSQL(sql);

                        s = new SFDBSrc(this.DDL_DBSrc.SelectedValue);

                        sql = "SELECT " + arr[1] + ", " + flow.DTSBTablePK
                              + " FROM " + flow.DTSBTable;

                        s.RunSQL(sql);
                    }
                    catch
                    {
                        //PubClass.Alert(ex.Message);
                        PubClass.Alert("设置的字段有误.【" + flow.DTSFields + "】");
                        return;//不执行保存
                    }
                }
                #endregion
            }
            #endregion

            flow.Update();
        }
Ejemplo n.º 23
0
        protected void Page_Load(object sender, EventArgs e)
        {
            #region Step = 1

            if (this.Step == 1)
            {
                BP.Sys.SFDBSrcs ens = new BP.Sys.SFDBSrcs();
                ens.RetrieveAll();


                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "第1步:请选择数据源");
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDBegin();
                Pub1.AddUL("class='navlist'");

                Pub1.AddLi("<div><a href='SFGuide.aspx?Step=12&FK_SFDBsrc=local'><img src='../../Img/New.gif' align='middle' /><span>创建本地编码字典表</span></a></div>");

                foreach (BP.Sys.SFDBSrc item in ens)
                {
                    Pub1.AddLi("<div><a href='SFGuide.aspx?Step=2&FK_SFDBSrc=" + item.No + "'><span class='nav'>" + item.No + "  -  " + item.Name + "</span></a></div>");
                }

                Pub1.AddLi("<div><a href=\"javascript:WinOpen('../RefFunc/UIEn.aspx?EnsName=BP.Sys.SFDBSrcs')\" ><img src='../../Img/New.gif' align='middle' /><span class='nav'>新建数据源</span></a></div>");

                Pub1.AddULEnd();
                Pub1.AddTDEnd();
                Pub1.AddTREnd();
                Pub1.AddTableEnd();
            }
            #endregion

            #region Step = 2

            if (this.Step == 2)
            {
                SFDBSrc src = new SFDBSrc(this.FK_SFDBSrc);

                Pub1.Add("<div class='easyui-layout' data-options=\"fit:true\">");
                Pub1.Add(string.Format("<div data-options=\"region:'west',split:true,title:'选择 {0} 表/视图'\" style='width:200px;'>",
                                       src.No));

                var lb = new LB();
                lb.ID = "LB_Table";
                lb.BindByTableNoName(src.GetTables());
                lb.Style.Add("width", "100%");
                lb.Style.Add("height", "100%");
                lb.AutoPostBack          = true;
                lb.SelectedIndexChanged += new EventHandler(lb_SelectedIndexChanged);
                Pub1.Add(lb);

                Pub1.AddDivEnd();

                Pub1.Add("<div data-options=\"region:'center',title:'第2步:请填写基础信息'\" style='padding:5px;'>");
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");

                var dbType = src.DBSrcType;
                if (dbType == DBSrcType.Localhost)
                {
                    switch (SystemConfig.AppCenterDBType)
                    {
                    case DBType.MSSQL:
                        dbType = DBSrcType.SQLServer;
                        break;

                    case DBType.Oracle:
                        dbType = DBSrcType.Oracle;
                        break;

                    case DBType.MySQL:
                        dbType = DBSrcType.MySQL;
                        break;

                    case DBType.Informix:
                        dbType = DBSrcType.Infomax;
                        break;

                    default:
                        throw new Exception("没有涉及到的连接测试类型...");
                    }
                }

                var islocal = (src.DBSrcType == DBSrcType.Localhost).ToString().ToLower();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "值(编号):");
                var ddl = new DDL();
                ddl.ID = "DDL_ColValue";
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTDBegin();
                Pub1.Add(ddl);
                Pub1.Add("&nbsp;编号列,比如:类别编号");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("标签(名称):");
                ddl    = new DDL();
                ddl.ID = "DDL_ColText";
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTDBegin();
                Pub1.Add(ddl);
                Pub1.Add("&nbsp;显示的列,比如:类别名称");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("父结点值(字段):");
                ddl    = new DDL();
                ddl.ID = "DDL_ColParentNo";
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTDBegin();
                Pub1.Add(ddl);
                Pub1.Add("&nbsp;如果是树类型实体,该列设置有效,比如:上级类别编号");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("字典表类型:");

                ddl    = new DDL();
                ddl.ID = "DDL_SFTableType";
                ddl.SelfBindSysEnum(SFTableAttr.SFTableType);
                ddl.Attributes.Add("onchange", string.Format("generateSQL('{0}','{1}','{2}',{3})", src.No, src.DBName, dbType, islocal));
                Pub1.AddTD(ddl);
                Pub1.AddTREnd();

                Pub1.AddTR();
                Pub1.AddTDGroupTitle("查询语句:");
                var tb = new TB();
                tb.ID       = "TB_SelectStatement";
                tb.TextMode = TextBoxMode.MultiLine;
                tb.Columns  = 60;
                tb.Rows     = 10;
                tb.Style.Add("width", "99%");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("<br />&nbsp;说明:查询语句可以修改,但请保证查询语句的准确性及有效性!");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Next, "下一步");
                btn.Click += new EventHandler(btn_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");

                Pub1.AddDivEnd();
                Pub1.AddDivEnd();

                if (!IsPostBack && lb.Items.Count > 0)
                {
                    lb.SelectedIndex = 0;
                    ShowSelectedTableColumns();
                }
            }
            #endregion

            #region Step = 12

            if (this.Step == 12)
            {
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("colspan='2'", "第2步:创建");
                Pub1.AddTREnd();

                TextBox tb = new TextBox();
                tb.ID = "TB_No";
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "表英文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;必须以字母或者下画线开头");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.Name;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "表中文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;显示的标签");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.TableDesc;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "描述:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;表描述");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Apply, "执行创建");
                btn.Click += new EventHandler(btn_Create_Local_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");
            }
            #endregion

            #region Step = 3

            if (this.Step == 3)
            {
                Pub1.AddTable("class='Table' cellSpacing='1' cellPadding='1'  border='1' style='width:100%'");
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("colspan='2'", "第3步:创建");
                Pub1.AddTREnd();

                TextBox tb = new TextBox();
                tb.ID = "TB_No";
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("style='width:100px'", "表英文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;必须以字母或者下画线开头");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.Name;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "表中文名称:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;显示的标签");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                tb    = new TextBox();
                tb.ID = "TB_" + SFTableAttr.TableDesc;
                Pub1.AddTR();
                Pub1.AddTDGroupTitle("", "描述:");
                Pub1.AddTDBegin();
                Pub1.Add(tb);
                Pub1.Add("&nbsp;表描述");
                Pub1.AddTDEnd();
                Pub1.AddTREnd();

                Pub1.AddTableEnd();
                Pub1.AddBR();
                Pub1.AddBR();
                Pub1.AddSpace(1);

                var btn = new LinkBtn(false, NamesOfBtn.Apply, "执行创建");
                btn.Click += new EventHandler(btn_Create_Click);
                Pub1.Add(btn);
                Pub1.AddSpace(1);

                Pub1.Add("<a href='" + Request.UrlReferrer + "' class='easyui-linkbutton'>上一步</a>");
            }
            #endregion
        }