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)); }
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)); }
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)); }
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)); }
/// <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)); }
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)); } }
/// <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)); }
/// <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); }
/// <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)); }
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> "); }
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(); }
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> "); 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步. }
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 /> 错误信息:" + 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; } } }
/// <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()); }
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(" 编号列,比如:类别编号"); 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(" 显示的列,比如:类别名称"); 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(" 如果是树类型实体,该列设置有效,比如:上级类别编号"); 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 /> 说明:查询语句可以修改,但请保证查询语句的准确性及有效性!"); 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(" 必须以字母或者下画线开头"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.Name; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "表中文名称:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 显示的标签"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.TableDesc; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "描述:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 表描述"); 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(" 必须以字母或者下画线开头,比如: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(" 显示的数据源名称,比如:人力资源系统,客户关系管理系统."); 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(" 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(" 比如: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(" 必须以字母或者下画线开头"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.Name; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "表中文名称:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 显示的标签"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.TableDesc; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "描述:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 表描述"); 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 }
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(" "); 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(" 请正确填写表单链接,支持全局变量@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(); }
/// <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); }
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); }
/// <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"); }
/// <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(); }
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(" 编号列,比如:类别编号"); 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(" 显示的列,比如:类别名称"); 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(" 如果是树类型实体,该列设置有效,比如:上级类别编号"); 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 /> 说明:查询语句可以修改,但请保证查询语句的准确性及有效性!"); 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(" 必须以字母或者下画线开头"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.Name; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "表中文名称:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 显示的标签"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.TableDesc; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "描述:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 表描述"); 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(" 必须以字母或者下画线开头"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.Name; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "表中文名称:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 显示的标签"); Pub1.AddTDEnd(); Pub1.AddTREnd(); tb = new TextBox(); tb.ID = "TB_" + SFTableAttr.TableDesc; Pub1.AddTR(); Pub1.AddTDGroupTitle("", "描述:"); Pub1.AddTDBegin(); Pub1.Add(tb); Pub1.Add(" 表描述"); 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 }