/// <summary> /// /// </summary> /// <param name="dsid">数据源id或progid</param> public LibDSContext(string dsid) { this._dsid = dsid; CachHelp cach = new CachHelp(); _ds = cach.GetCach(string.Format("{0}_{1}", dsid, SysConstManage.TBSchemasuffix)) as LibDataSource; if (_ds == null) { _ds = SDPCRL.COM.ModelManager.ModelManager.GetDataSource(dsid); if (_ds == null) { LibFormPage form = SDPCRL.COM.ModelManager.ModelManager.GetFormSource(dsid); _ds = SDPCRL.COM.ModelManager.ModelManager.GetDataSource(form.DSID); } //101:数据源:{0} 不存在 if (_ds == null) { throw new LibExceptionBase(101, dsid); } //100:没有表结构 if (_ds.DefTables == null) { throw new LibExceptionBase(100); } cach.AddCachItem(string.Format("{0}_{1}", dsid, SysConstManage.TBSchemasuffix), _ds, DateTimeOffset.Now.AddMinutes(30)); } InitialContext(); }
public string GetSQL(string tableNm, string[] fields, WhereObject where, bool IsJoinRelateTable = true, bool IsJoinFromSourceField = true) { StringBuilder builder = new StringBuilder(); builder.Append(ResFactory.ResManager.SQLSelect); if (fields != null) { foreach (string field in fields) { if (builder.Length != ResFactory.ResManager.SQLSelect.Length) { builder.Append(SysConstManage.Comma); } builder.AppendFormat(" {0}", field); } } if (string.IsNullOrEmpty(this._id)) { if (builder.Length == ResFactory.ResManager.SQLSelect.Length) { builder.AppendFormat(" {0}", SysConstManage.Asterisk); } builder.AppendFormat(" {0}", ResFactory.ResManager.SQLFrom); builder.AppendFormat(" {0}", tableNm); } else { LibDataSource ds = null; if (this._mark) { ds = ModelManager.GetDataSource(this._id); } else { LibFormPage form = ModelManager.GetFormSource(this._id); ds = ModelManager.GetDataSource(form.DSID); } if (ds != null) { DoGetSQL(builder, tableNm, ds, where, null, false, IsJoinRelateTable, IsJoinFromSourceField); } } if (where != null && !string.IsNullOrEmpty(where.WhereFormat)) { return(string.Format("EXEC sp_executesql N'{0} where {1}',{2}", builder.ToString(), where.WhereFormat, where.ValueTostring)); } return(string.Format("EXEC sp_executesql N'{0}'", builder.ToString())); }
private void InternalGetSQL(StringBuilder builder, string tableNm, string[] fields, string[] sumaryfields, WhereObject where, bool ispage, bool IsJoinRelateTable, bool IsJoinFromSourceField, bool IsRpt) { builder.Append(ResFactory.ResManager.SQLSelect); if (fields != null) { foreach (string field in fields) { if (builder.Length != ResFactory.ResManager.SQLSelect.Length) { builder.Append(SysConstManage.Comma); } builder.AppendFormat(" {0}", field); } } if (string.IsNullOrEmpty(this._id)) { if (builder.Length == ResFactory.ResManager.SQLSelect.Length) { builder.AppendFormat(" {0}", SysConstManage.Asterisk); } //builder.AppendFormat("{0}ROW_NUMBER()OVER(order by A.BillNo) as rownumber"); builder.AppendFormat(" {0}", ResFactory.ResManager.SQLFrom); builder.AppendFormat(" {0}", tableNm); } else { LibDataSource ds = null; if (this._mark) { ds = ModelManager.GetDataSource(this._id); } else { LibFormPage form = ModelManager.GetFormSource(this._id); ds = ModelManager.GetDataSource(form.DSID); } if (ds != null) { DoGetSQL(builder, tableNm, ds, where, sumaryfields, ispage, IsJoinRelateTable, IsJoinFromSourceField, IsRpt); } } }
public LibTableObj(string dsid, string tablenm) { LibDataSource _ds = SDPCRL.COM.ModelManager.ModelManager.GetDataSource(dsid); //101:数据原:{0} 不存在 if (_ds == null) { throw new LibExceptionBase(101, dsid); } //100:没有表结构 if (_ds.DefTables == null) { throw new LibExceptionBase(100); } this._dsid = dsid; foreach (LibDefineTable deftb in _ds.DefTables) { if (deftb.TableStruct == null) { continue; } foreach (LibDataTableStruct tb in deftb.TableStruct) { if (tb.Name.ToUpper() != tablenm.ToUpper()) { continue; } DataTable = new CreateTableSchemaHelp().DoCreateTableShema(tb); break; } } if (DataTable == null) { throw new LibExceptionBase(521); } GetColumns(); }
private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { LibTreeNode curentNode = (LibTreeNode)this.treeView1.SelectedNode; switch (e.ClickedItem.Name) { case "andTransField": //添加转单字段 if (this._Trans.TransFields == null) { _Trans.TransFields = new LibCollection <LibTransFieldMap>(); } var existfields = _Trans.TransFields.Tolist(); if (string.IsNullOrEmpty(_Trans.SrcProgId)) { ExceptionManager.ThrowError("来源单progid 必填"); //MessageHandle.ShowMessage("来源单progid 必填",false); } var formpage = ModelDesignProject.GetFormSourceByFormId(_Trans.SrcProgId); LibDataSource ds = ModelDesignProject.GetDataSourceById(formpage.DSID); Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; TreeView tree = new TreeView(); //tree.AfterCheck += new TreeViewEventHandler(Gridtree_AfterCheck); tree.CheckBoxes = true; tree.Dock = DockStyle.Fill; p.Controls.Add(tree); LibTreeNode _node; if (ds.DefTables != null) { List <ExistField> exists = new List <ExistField>(); foreach (var item in existfields) { exists.Add(new ExistField { Name = item.SrcFieldNm, FromTableNm = item.SrcTableNm }); } DSUtiles.GetAllFieldsByDS(ds, tree, exists); } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { curentNode.Nodes.Clear(); if (_Trans.TransFields != null && _Trans.TransFields.Count > 0) { _Trans.TransFields.RemoveAll(); } foreach (LibTreeNode deftb in tree.Nodes) { foreach (LibTreeNode tbstruct in deftb.Nodes) { foreach (LibTreeNode f in tbstruct.Nodes) { if (!f.Checked) { continue; } #region 添加节点 //树节点 LibTreeNode fieldNode = new LibTreeNode(); fieldNode.NodeId = Guid.NewGuid().ToString(); fieldNode.NodeType = NodeType.TransField; fieldNode.Name = f.Name; fieldNode.Text = fieldNode.Name; curentNode.Nodes.Add(fieldNode); //控件属性 TransFieldProperty fieldProperty = new TransFieldProperty(fieldNode.NodeId); _transFieldlst.Add(fieldProperty); fieldProperty.Dock = DockStyle.Fill; this.splitContainer1.Panel2.Controls.Add(fieldProperty); //对应实体 LibTransFieldMap libtransfield = new LibTransFieldMap(); libtransfield.ID = fieldNode.NodeId; libtransfield.SrcFieldNm = f.Name; libtransfield.SrcTableNm = (bool)f.Tag ? tbstruct.Name : string.Empty; //libtransfield.FromDefTableNm = (bool)f.Tag ? deftb.Name : string.Empty; libtransfield.SrcTableIndex = Convert.ToInt32(tbstruct.NodeId); libtransfield.SrcFieldDisplay = f.Text; //libtransfield.Isdefine = !(bool)f.Tag; _Trans.TransFields.Add(libtransfield); fieldProperty.SetPropertyValue(libtransfield, fieldNode); #endregion } } } UpdateTabPageText(); } break; } }
public LibTable[] CreateTableSchema(string dsid, string package) { //List<LibTable> dts = new List<LibTable>(); //LibTable dftb = null; //DataTable dt = null; //DataColumn col = null; //List<DataColumn> primarykey= null; //int index = 0; FileOperation fileoperation = new FileOperation(); LibDataSource data = ModelManager.ModelManager.GetModelBypath <LibDataSource>(_root, dsid, package); return(CreateTableSchema(data)); #region 旧代码 //if (data != null) //{ // if (data.DefTables == null) return null; // foreach (LibDefineTable deftb in data.DefTables) // { // if (deftb.TableStruct == null) continue; // dftb = new LibTable(deftb.TableName); // dftb.Tables = new DataTable[deftb.TableStruct.Count]; // index = 0; // foreach (LibDataTableStruct tb in deftb.TableStruct) // { // if (tb.Fields == null) continue; // dt = new DataTable(tb.Name); // dftb.Tables[index] = dt; // primarykey = new List<DataColumn>(); // foreach (LibField f in tb.Fields) // { // col = new DataColumn(f.Name); // col.Caption = f.DisplayName; // switch (f.FieldType) // { // case LibFieldType.Byte: // col.DataType = typeof(byte); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.Date: // col.DataType = typeof(Date); // //if (!f.AutoIncrement) // // col.DefaultValue = new Date { value = DateTime.Now.ToString() }; // break; // case LibFieldType.DateTime: // col.DataType = typeof(DateTime); // if (!f.AutoIncrement) // col.DefaultValue = DateTime.Now; // break; // case LibFieldType.Decimal: // col.DataType = typeof(decimal); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.Interger: // col.DataType = typeof(Int32); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.Long: // col.DataType = typeof(long); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.String: // case LibFieldType.Text: // col.DataType = typeof(string); // if (!f.AutoIncrement) // col.DefaultValue = string.Empty; // break; // } // if (tb.PrimaryKey.Contains(f.Name))//属于主键 // { // primarykey.Add(col); // } // if (f.AutoIncrement) // { // col.AutoIncrement = true; // col.AutoIncrementSeed = f.AutoIncrementSeed; // col.AutoIncrementStep = f.AutoIncrementStep; // } // col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive=f.IsActive , // IsRelate = true, // MapPrimarykey =f.RelatePrimarykey, // DataTypeLen =f.FieldLength, // Decimalpoint =f.Decimalpoint, // AliasName=f.AliasName // }); // dt.Columns.Add(col); // } // #region 系统默认新增的一列行号 用于系统对行项 唯一标识,自增长。 // col = new DataColumn(SysConstManage.sdp_rowid); // col.DataType = typeof(int); // col.AutoIncrement = true; // col.AutoIncrementSeed = 1; // col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive =false, IsRelate = false}); // dt.Columns.Add(col); // #endregion // #region 系统默认新增的一列 是否选中。 // col = new DataColumn(SysConstManage.IsSelect); // col.DataType = typeof(bool); // col.DefaultValue = false; // col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive = false, IsRelate = false }); // dt.Columns.Add(col); // #endregion // dt.PrimaryKey = primarykey.ToArray(); // dt.ExtendedProperties.Add(SysConstManage.ExtProp, new TableExtendedProperties // { // TableIndex = tb.TableIndex, // RelateTableIndex = tb.JoinTableIndex, // Ignore = tb.Ignore // }) ; // index++; // } // dts.Add(dftb); // } //} //return dts.ToArray(); #endregion }
public LibTable[] CreateTableSchema(LibDataSource data) { List <LibTable> dts = new List <LibTable>(); LibTable[] _dts = null; LibTable dftb = null; DataTable dt = null; //DataColumn col = null; //List<DataColumn> primarykey = null; int index = 0; if (data != null) { if (data.DefTables == null) { return(null); } //CachHelp cach = new CachHelp(); // _dts = cach.GetCach(string.Format("{0}_{1}", data.DSID, SysConstManage.TBSchemasuffix)) as LibTable[]; //if (_dts != null) //{ // return _dts; //} foreach (LibDefineTable deftb in data.DefTables) { if (deftb.TableStruct == null) { continue; } dftb = new LibTable(deftb.TableName); dftb.Tables = new LibTableObj[deftb.TableStruct.Count]; index = 0; foreach (LibDataTableStruct tb in deftb.TableStruct) { if (tb.Fields == null) { continue; } dt = DoCreateTableShema(tb); dftb.Tables[index] = new LibTableObj(dt); #region 旧代码 //dt = new DataTable(tb.Name); //dftb.Tables[index] = dt; //primarykey = new List<DataColumn>(); //foreach (LibField f in tb.Fields) //{ // col = new DataColumn(f.Name); // col.Caption = f.DisplayName; // switch (f.FieldType) // { // case LibFieldType.Byte: // col.DataType = typeof(bool); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.Date: // col.DataType = typeof(Date); // //if (!f.AutoIncrement) // // col.DefaultValue = new Date { value = DateTime.Now.ToString() }; // break; // case LibFieldType.DateTime: // col.DataType = typeof(DateTime); // if (!f.AutoIncrement) // col.DefaultValue = DateTime.Now; // break; // case LibFieldType.Decimal: // col.DataType = typeof(decimal); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.Interger: // col.DataType = typeof(Int32); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.Long: // col.DataType = typeof(long); // if (!f.AutoIncrement) // col.DefaultValue = 0; // break; // case LibFieldType.String: // case LibFieldType.Text: // col.DataType = typeof(string); // if (!f.AutoIncrement) // col.DefaultValue = string.Empty; // break; // case LibFieldType.Img: // col.DataType = typeof(byte[]); // break; // } // if (tb.PrimaryKey.Contains(f.Name))//属于主键 // { // primarykey.Add(col); // } // if (f.AutoIncrement) // { // col.AutoIncrement = true; // col.AutoIncrementSeed = f.AutoIncrementSeed; // col.AutoIncrementStep = f.AutoIncrementStep; // } // col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties // { // IsActive = f.IsActive, // IsRelate = false, // MapPrimarykey = f.RelatePrimarykey, // DataTypeLen = f.FieldLength, // Decimalpoint = f.Decimalpoint, // AliasName = f.AliasName // }); // dt.Columns.Add(col); // if (f.SourceField != null && f.SourceField.Count > 0) // { // foreach (LibFromSourceField item in f.SourceField) // { // foreach (var relatef in item.RelateFieldNm) // { // if (relatef.FromTableIndex != item.FromTableIndex) continue; // col = new DataColumn(string.IsNullOrEmpty(relatef.AliasName) ? relatef.FieldNm : relatef.AliasName); // col.Caption = relatef.DisplayNm; // switch (relatef.FieldType) // { // case LibFieldType.Byte: // col.DataType = typeof(byte); // col.DefaultValue = 0; // break; // case LibFieldType.Date: // col.DataType = typeof(Date); // break; // case LibFieldType.DateTime: // col.DataType = typeof(DateTime); // col.DefaultValue = DateTime.Now; // break; // case LibFieldType.Decimal: // col.DataType = typeof(decimal); // col.DefaultValue = 0; // break; // case LibFieldType.Interger: // col.DataType = typeof(Int32); // col.DefaultValue = 0; // break; // case LibFieldType.Long: // col.DataType = typeof(long); // col.DefaultValue = 0; // break; // case LibFieldType.String: // case LibFieldType.Text: // col.DataType = typeof(string); // col.DefaultValue = string.Empty; // break; // } // col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties // { // IsActive = false, // IsRelate = true, // MapPrimarykey = string.Empty, // DataTypeLen = 0, // Decimalpoint = 0, // AliasName = relatef.AliasName // }); // dt.Columns.Add(col); // } // } // } //} //#region 系统默认新增的一列行号 用于系统对行项 唯一标识,自增长。 //col = new DataColumn(SysConstManage.sdp_rowid); //col.DataType = typeof(int); //col.AutoIncrement = true; //col.AutoIncrementSeed = 1; //col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive = false, IsRelate = false }); //dt.Columns.Add(col); //#endregion //#region 系统默认新增的一列 是否选中。 //col = new DataColumn(SysConstManage.IsSelect); //col.DataType = typeof(bool); //col.DefaultValue = false; //col.ExtendedProperties.Add(SysConstManage.ExtProp, new ColExtendedProperties { IsActive = false, IsRelate = false }); //dt.Columns.Add(col); //#endregion //dt.PrimaryKey = primarykey.ToArray(); //dt.ExtendedProperties.Add(SysConstManage.ExtProp, new TableExtendedProperties //{ // TableIndex = tb.TableIndex, // RelateTableIndex = tb.JoinTableIndex, // Ignore = tb.Ignore //}); #endregion index++; } dts.Add(dftb); } _dts = dts.ToArray(); //cach.AddCachItem(string.Format("{0}_{1}", data.DSID, SysConstManage.TBSchemasuffix), _dts, DateTimeOffset.Now.AddMinutes(30)); } return(_dts); }
private void DoGetSQL(StringBuilder builder, string tableNm, LibDataSource ds, WhereObject where, string[] sumaryfields, bool page = false, bool IsJoinRelateTable = true, bool IsJoinFromSourceField = true, bool IsRpt = false) { List <LibDataTableStruct> list = new List <LibDataTableStruct>(); StringBuilder joinstr = new StringBuilder(); StringBuilder joinfield = null; StringBuilder allfields = new StringBuilder(); Dictionary <string, string> tablealiasmdic = new Dictionary <string, string>(); foreach (LibDefineTable item in ds.DefTables) { if (item.TableStruct == null) { continue; } list.AddRange(item.TableStruct.ToArray()); } var tb = list.FirstOrDefault(i => i.Name == tableNm && i.Ignore); char tbaliasnm = LibSysUtils.ToCharByTableIndex(tb.TableIndex); #region 组织要查询表的字段 if (builder.Length == ResFactory.ResManager.SQLSelect.Length) { foreach (LibField f in tb.Fields) { if (!f.IsActive) { continue; } if (allfields.Length > 0) { allfields.Append(SysConstManage.Comma); } allfields.AppendFormat(" {0}.{1}", tbaliasnm, f.Name); } #region 日志列 if (allfields.Length > 0) { allfields.Append(SysConstManage.Comma); } allfields.AppendFormat(" {0}.{1}", tbaliasnm, SysConstManage.Sdp_LogId); #endregion } #endregion if (tb != null) { if (IsJoinRelateTable) { var relatetbs = list.Where(i => i.JoinTableIndex == tb.TableIndex && i.TableIndex != tb.TableIndex && i.Ignore).ToList(); List <int> tbindexs = null; //char tbaliasnm2 = tbaliasnm; while (relatetbs != null && relatetbs.Count > 0) { tbindexs = new List <int>(); foreach (var jointb in relatetbs) { tbindexs.Add(jointb.TableIndex); #region 组织joinstr语句 joinstr.AppendFormat(" {0} {1} {2} {3} ", ResFactory.ResManager.SQLLeftJoin, jointb.Name, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), //(char)(jointb.TableIndex+65), ResFactory.ResManager.SQLOn); joinfield = new StringBuilder(); foreach (var relatfield in jointb.JoinFields) { if (joinfield.Length > 0) { joinfield.Append(ResFactory.ResManager.SQLAnd);; } LibField libfd = jointb.Fields.FindFirst("Name", relatfield); //if (string.IsNullOrEmpty(libfd.RelatePrimarykey)) joinfield.AppendFormat(" {0}.{1}={2}.{3} ", LibSysUtils.ToCharByTableIndex(jointb.JoinTableIndex), string.IsNullOrEmpty(libfd.RelatePrimarykey) ? relatfield : libfd.RelatePrimarykey, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), relatfield); //else } joinstr.Append(joinfield.ToString()); joinstr.AppendLine(); #endregion #region 取关联表的字段 if (builder.Length == ResFactory.ResManager.SQLSelect.Length) { foreach (LibField f2 in jointb.Fields) { if (!f2.IsActive || jointb.JoinFields.Contains(f2.Name)) { continue; } if (allfields.ToString().ToUpper().Contains(string.Format(".{0}", f2.Name.ToUpper())) && string.IsNullOrEmpty(f2.AliasName)) { allfields.AppendFormat("{0}{1}.{2} as {3}", SysConstManage.Comma, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name, string.Format("{0}{2}{1}", LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name, SysConstManage.Underline)); } else { if (!string.IsNullOrEmpty(f2.AliasName)) { allfields.AppendFormat("{0}{1}.{2} as {3}", SysConstManage.Comma, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name, f2.AliasName); } else { allfields.AppendFormat("{0}{1}.{2}", SysConstManage.Comma, LibSysUtils.ToCharByTableIndex(jointb.TableIndex), f2.Name); } } } } #endregion } relatetbs = list.Where(i => tbindexs.Contains(i.JoinTableIndex) && i.TableIndex != i.JoinTableIndex && i.Ignore).ToList(); //tbaliasnm2= } } #region 字段上的来源表。 var relatefields = tb.Fields.ToArray().Where(i => i.SourceField != null); List <string> vals = new List <string>(); foreach (LibField f in relatefields) { foreach (LibFromSourceField fromfield in f.SourceField) { string key = string.Format("{0}{1}{2}", f.Name, fromfield.FromDataSource, fromfield.FromTableIndex); string tbnm = string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(fromfield.FromTableIndex)); if (!tablealiasmdic.ContainsKey(key)) { //vals.Add(tbnm); int cout = vals.Where(i => i == tbnm).Count(); if (cout > 0) { tbnm = string.Format("{0}{1}", tbnm, cout); //tablealiasmdic.Add(key, string.Format("{0}", tbnm)); } vals.Add(tbnm); tablealiasmdic.Add(key, tbnm); //tablealiasmdic.Add(key,string.Format( tbnm); //tablealiasmdic[tbnm]++; //tbnm = string.Format("{0}{1}", tbnm, tablealiasmdic[tbnm]+1); } else { ////int cout = vals.Where(i => i == tbnm).Count(); tbnm = tablealiasmdic[key]; //tablealiasmdic.Add(tbnm, 0); } #region 组织joinstr语句 joinstr.AppendFormat(" {0} {1} {2} {3} ", ResFactory.ResManager.SQLLeftJoin, fromfield.FromStructTableNm, tbnm, //(char)(jointb.TableIndex+65), ResFactory.ResManager.SQLOn); joinfield = new StringBuilder(); if (joinfield.Length > 0) { joinfield.Append(ResFactory.ResManager.SQLAnd); } joinfield.AppendFormat(" {0}.{1}={2}.{3} ", tbaliasnm, f.Name, tbnm, fromfield.FromFieldNm); #region 处理JoinOnCondition if (!string.IsNullOrEmpty(fromfield.JoinOnCondition)) { if (where == null) { where = new WhereObject(); } DoJoinOnCondition(fromfield.JoinOnCondition, where); } #endregion joinstr.Append(joinfield.ToString()); joinstr.AppendLine(); if (IsJoinFromSourceField) { #region 取来源表所在数据源的 与来源表关联的表。 LibDataSource fromSouceDS = ModelManager.GetDataSource(fromfield.FromDataSource); if (fromSouceDS != null) { List <LibDataTableStruct> list2 = new List <LibDataTableStruct>(); foreach (LibDefineTable def in fromSouceDS.DefTables) { if (def.TableStruct == null) { continue; } list2.AddRange(def.TableStruct.ToArray()); } var relatetbs = list2.Where(i => i.JoinTableIndex == fromfield.FromTableIndex && i.TableIndex != fromfield.FromTableIndex && i.Ignore).ToList(); List <int> tbindexs2 = null; while (relatetbs != null && relatetbs.Count > 0) { tbindexs2 = new List <int>(); foreach (var jointb in relatetbs) { string key2 = string.Format("{0}{1}{2}", f.Name, fromfield.FromDataSource, jointb.TableIndex); tbindexs2.Add(jointb.TableIndex); string tbnm2 = string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(jointb.TableIndex)); if (!tablealiasmdic.ContainsKey(key2)) { //vals.Add(tbnm2); int cout = vals.Where(i => i == tbnm2).Count(); if (cout > 0) { tbnm2 = string.Format("{0}{1}", tbnm2, cout); //tablealiasmdic.Add(key, string.Format("{0}", tbnm)); } tablealiasmdic.Add(key, tbnm2); //tablealiasmdic.Add(key2, tbnm2); //tablealiasmdic[tbnm2]++; //tbnm2 = string.Format("{0}{1}", tbnm2, tablealiasmdic[tbnm2]+1); } else { tbnm2 = tablealiasmdic[key2]; //tablealiasmdic.Add(tbnm2, 0); } joinstr.AppendFormat(" {0} {1} {2} {3} ", ResFactory.ResManager.SQLLeftJoin, jointb.Name, tbnm2, //(char)(jointb.TableIndex+65), ResFactory.ResManager.SQLOn); joinfield = new StringBuilder(); foreach (var relatfield in jointb.JoinFields) { if (joinfield.Length > 0) { joinfield.Append(ResFactory.ResManager.SQLAnd);; } LibField libfd = jointb.Fields.FindFirst("Name", relatfield); joinfield.AppendFormat(" {0}.{1}={2}.{3} ", string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(jointb.JoinTableIndex)), string.IsNullOrEmpty(libfd.RelatePrimarykey) ? relatfield : libfd.RelatePrimarykey, string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(jointb.TableIndex)), relatfield); } joinstr.Append(joinfield.ToString()); joinstr.AppendLine(); } relatetbs = list2.Where(i => tbindexs2.Contains(i.JoinTableIndex) && i.TableIndex != i.JoinTableIndex && i.Ignore).ToList(); //tbaliasnm2= } } #endregion } if (builder.Length == ResFactory.ResManager.SQLSelect.Length || IsRpt) { if (fromfield.RelateFieldNm != null) { foreach (LibRelateField relatef in fromfield.RelateFieldNm) { if (!IsJoinFromSourceField && relatef.FromTableIndex != fromfield.FromTableIndex) { continue; } key = string.Format("{0}{1}{2}", f.Name, fromfield.FromDataSource, relatef.FromTableIndex); //tbnm = string.Format("{0}{1}", tbaliasnm, LibSysUtils.ToCharByTableIndex(relatef.FromTableIndex)); //if (IsJoinFromSourceField && relatef.FromTableIndex != fromfield.FromTableIndex) //{ tbnm = tablealiasmdic[key]; //} if (allfields.Length > 0) { allfields.Append(SysConstManage.Comma); } if (!string.IsNullOrEmpty(relatef.AliasName)) { allfields.AppendFormat("{0}.{1} as {2}", //SysConstManage.Comma, tbnm, relatef.FieldNm, relatef.AliasName); } else { allfields.AppendFormat("{0}.{1}", //SysConstManage.Comma, tbnm, relatef.FieldNm); } } } } #endregion } } #endregion if (builder.Length == ResFactory.ResManager.SQLSelect.Length || IsRpt) { if (builder.Length != ResFactory.ResManager.SQLSelect.Length) { builder.Append(SysConstManage.Comma); } builder.Append(allfields.ToString()); } if (page) //分页 { StringBuilder orderstr = new StringBuilder(); foreach (string key in tb.PrimaryKey) { if (orderstr.Length > 0) { orderstr.Append(SysConstManage.Comma); } orderstr.AppendFormat("{0}.{1}", LibSysUtils.ToCharByTableIndex(tb.TableIndex), key); } builder.AppendFormat(",ROW_NUMBER()OVER(order by {0}) as rownumber ", orderstr.ToString()); } //if (sumaryfields != null) //汇总字段 //{ // foreach (string field in sumaryfields) // { // builder.AppendFormat(",SUM({0})OVER() as {1}{2}", field,SysConstManage.sdp_summaryprefix,field .Substring(field.IndexOf(".")+1)); // } //} builder.AppendFormat(" {0}", ResFactory.ResManager.SQLFrom); builder.AppendFormat(" {0} {1}", tableNm, tbaliasnm); builder.Append(joinstr.ToString()); } }
public static void GetAllFieldsByDS(LibDataSource ds, TreeView tree, List <ExistField> existfields) { #region 收集数据源字段 foreach (LibDefineTable deftb in ds.DefTables) { LibTreeNode deftbnode = new LibTreeNode(); deftbnode.Name = deftb.TableName; deftbnode.Text = string.Format("{0}({1})", deftb.DisplayName, deftb.TableName); tree.Nodes.Add(deftbnode); LibTreeNode _node; if (deftb.TableStruct != null) { foreach (LibDataTableStruct dtstruct in deftb.TableStruct) { LibTreeNode dtstructnode = new LibTreeNode(); dtstructnode.Name = dtstruct.Name; dtstructnode.Text = string.Format("{0}({1})", dtstruct.DisplayName, dtstruct.Name); dtstructnode.NodeId = dtstruct.TableIndex.ToString(); deftbnode.Nodes.Add(dtstructnode); if (dtstruct.Fields != null) { foreach (LibField fld in dtstruct.Fields) { if (!fld.IsActive) { continue; } _node = new LibTreeNode(); _node.Name = fld.Name; _node.Text = fld.DisplayName; _node.Tag = true; _node.Checked = existfields.FirstOrDefault(i => i.Name == fld.Name && i.FromTableNm == dtstruct.Name) != null; dtstructnode.Nodes.Add(_node); if (fld.SourceField != null && fld.SourceField.Count > 0) { foreach (LibFromSourceField fromfld in fld.SourceField) { if (fromfld.RelateFieldNm != null && fromfld.RelateFieldNm.Count > 0) { foreach (LibRelateField relateField in fromfld.RelateFieldNm) { if (relateField != null) { _node = new LibTreeNode(); _node.Name = string.IsNullOrEmpty(relateField.AliasName) ? relateField.FieldNm : relateField.AliasName; _node.Text = relateField.DisplayNm; _node.Tag = false; _node.Checked = existfields.FirstOrDefault(i => i.Name == _node.Name && i.FromTableNm == dtstruct.Name) != null; dtstructnode.Nodes.Add(_node); } } } } } } } } } } #endregion }
public override void TextAndBotton_Click(object sender, EventArgs e) { base.TextAndBotton_Click(sender, e); Control ctl = sender as Control; string ctrNm = ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, ""); if (_Node != null) { var pnode = _Node.Parent as TreeNode; LibTransSource transSource = pnode.Tag as LibTransSource; if (string.Compare(ctrNm, "tranfld_TargetFieldNm") == 0) { if (string.IsNullOrEmpty(transSource.TargetProgId)) { ExceptionManager.ThrowError("目标单progid 必填"); //MessageHandle.ShowMessage("来源单progid 必填",false); } var formpage = ModelDesignProject.GetFormSourceByFormId(transSource.TargetProgId); LibDataSource ds = ModelDesignProject.GetDataSourceById(formpage.DSID); Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; TreeView tree = new TreeView(); tree.AfterCheck += new TreeViewEventHandler(tree_AfterCheck); tree.CheckBoxes = true; tree.Dock = DockStyle.Fill; p.Controls.Add(tree); //LibTreeNode _node; if (ds.DefTables != null) { List <ExistField> exists = new List <ExistField>(); exists.Add(new ExistField { Name = this.entity.TargetFieldNm, FromTableNm = this.entity.TargetTableNm }); DSUtiles.GetAllFieldsByDS(ds, tree, exists); } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { foreach (LibTreeNode deftb in tree.Nodes) { foreach (LibTreeNode tbstruct in deftb.Nodes) { foreach (LibTreeNode f in tbstruct.Nodes) { if (!f.Checked) { continue; } this.entity.TargetFieldNm = f.Name; this.entity.TargetFieldDisplay = f.Text; this.entity.TargetTableNm = (bool)f.Tag ? tbstruct.Name : string.Empty; this.entity.TargetTableIndex = Convert.ToInt32(tbstruct.NodeId); break; } } } this.SetPropertyValue(this.entity, _Node); UpdateTabPageText(); } } } }
private void contextMenuStrip2_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { LibTreeNode curentNode = (LibTreeNode)this.treeView1.SelectedNode; LibReportGrid currentlibrptgrid = _rpt.GridGroups.FindFirst("GridGroupID", curentNode.NodeId); switch (e.ClickedItem.Name) { case "AddFromDSField": //添加数据源字段 if (currentlibrptgrid.ReportFields == null) { currentlibrptgrid.ReportFields = new LibCollection <LibReportField>(); } var existfields = currentlibrptgrid.ReportFields.Tolist(); LibDataSource ds = ModelDesignProject.GetDataSourceById(currentlibrptgrid.DSID); Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; TreeView tree = new TreeView(); tree.AfterCheck += new TreeViewEventHandler(Gridtree_AfterCheck); tree.CheckBoxes = true; tree.Dock = DockStyle.Fill; p.Controls.Add(tree); LibTreeNode _node; if (ds.DefTables != null) { List <ExistField> exists = new List <ExistField>(); foreach (var item in existfields) { exists.Add(new ExistField { Name = item.Name, FromTableNm = item.FromTableNm }); } DSUtiles.GetAllFieldsByDS(ds, tree, exists); #region 收集数据源字段 //foreach (LibDefineTable deftb in ds.DefTables) //{ // LibTreeNode deftbnode = new LibTreeNode(); // deftbnode.Name = deftb.TableName; // deftbnode.Text = string.Format("{0}({1})", deftb.DisplayName, deftb.TableName); // tree.Nodes.Add(deftbnode); // if (deftb.TableStruct != null) // { // foreach (LibDataTableStruct dtstruct in deftb.TableStruct) // { // LibTreeNode dtstructnode = new LibTreeNode(); // dtstructnode.Name = dtstruct.Name; // dtstructnode.Text = string.Format("{0}({1})", dtstruct.DisplayName, dtstruct.Name); // dtstructnode.NodeId = dtstruct.TableIndex.ToString(); // deftbnode.Nodes.Add(dtstructnode); // if (dtstruct.Fields != null) // { // foreach (LibField fld in dtstruct.Fields) // { // if (!fld.IsActive) continue; // _node = new LibTreeNode(); // _node.Name = fld.Name; // _node.Text = fld.DisplayName; // _node.Tag = true; // _node.Checked = existfields.FirstOrDefault(i => i.Name == fld.Name && i.FromTableNm == dtstruct.Name) != null; // dtstructnode.Nodes.Add(_node); // if (fld.SourceField != null && fld.SourceField.Count > 0) // { // foreach (LibFromSourceField fromfld in fld.SourceField) // { // if (fromfld.RelateFieldNm != null && fromfld.RelateFieldNm.Count > 0) // { // foreach (LibRelateField relateField in fromfld.RelateFieldNm) // { // if (relateField != null) // { // _node = new LibTreeNode(); // _node.Name = string.IsNullOrEmpty(relateField.AliasName) ? relateField.FieldNm : relateField.AliasName; // _node.Text = relateField.DisplayNm; // _node.Tag = false; // _node.Checked = existfields.FirstOrDefault(i => i.Name == _node.Name && i.FromTableNm == dtstruct.Name) != null; // dtstructnode.Nodes.Add(_node); // } // } // } // } // } // } // } // } // } //} #endregion } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { curentNode.Nodes.Clear(); if (currentlibrptgrid.ReportFields != null && currentlibrptgrid.ReportFields.Count > 0) { currentlibrptgrid.ReportFields.RemoveAll(); } foreach (LibTreeNode deftb in tree.Nodes) { foreach (LibTreeNode tbstruct in deftb.Nodes) { foreach (LibTreeNode f in tbstruct.Nodes) { if (!f.Checked) { continue; } #region 添加节点 //树节点 LibTreeNode fieldNode = new LibTreeNode(); fieldNode.NodeId = Guid.NewGuid().ToString(); fieldNode.NodeType = NodeType.GridGroup_Field; fieldNode.Name = f.Name; fieldNode.Text = fieldNode.Name; curentNode.Nodes.Add(fieldNode); //控件属性 ReportFieldProperty rptfieldProperty = new ReportFieldProperty(fieldNode.NodeId); _reportFieldlst.Add(rptfieldProperty); rptfieldProperty.Dock = DockStyle.Fill; this.splitContainer1.Panel2.Controls.Add(rptfieldProperty); //对应实体 LibReportField librptfield = new LibReportField(); librptfield.ID = fieldNode.NodeId; librptfield.Name = f.Name; librptfield.FromTableNm = (bool)f.Tag? tbstruct.Name:string.Empty; librptfield.FromDefTableNm = (bool)f.Tag ? deftb.Name:string.Empty; librptfield.FromTableIndex = Convert.ToInt32(tbstruct.NodeId); librptfield.DisplayName = f.Text; librptfield.Isdefine = !(bool)f.Tag; currentlibrptgrid.ReportFields.Add(librptfield); rptfieldProperty.SetPropertyValue(librptfield, fieldNode); #endregion } } } UpdateTabPageText(); } break; case "AddDefineField": //添加自定义字段 break; } }
public override void TextAndBotton_Click(object sender, EventArgs e) { base.TextAndBotton_Click(sender, e); Control ctl = sender as Control; string ctrNm = ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, ""); Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; ListBox listBox = new ListBox(); listBox.Dock = DockStyle.Fill; p.Controls.Add(listBox); if (string.Compare(ctrNm, "rptGrid_DSID") == 0) //选择数据源ID { string[] dsarray = ModelManager.GetAllDataSourceNm(string.Empty); if (dsarray != null && dsarray.Length > 0) { foreach (string item in dsarray) { listBox.Items.Add(item); } } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { if (listBox.SelectedItem == null) { return; } if (this.Controls[ctrNm].Text.Trim() != listBox.SelectedItem.ToString()) { this.Controls[ctrNm].Text = listBox.SelectedItem.ToString(); this.entity.DSID = listBox.SelectedItem.ToString(); } } } else if (string.Compare(ctrNm, "rptGrid_FromTable") == 0) //来源表 { if (!string.IsNullOrEmpty(this.entity.DSID)) { LibDataSource ds = ModelDesignProject.GetDataSourceById(this.entity.DSID); if (ds != null && ds.DefTables != null) { foreach (LibDefineTable deftb in ds.DefTables) { if (deftb.TableStruct != null) { foreach (LibDataTableStruct tb in deftb.TableStruct) { listBox.Items.Add(tb.Name); } } } } } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { if (listBox.SelectedItem == null) { return; } if (this.Controls[ctrNm].Text.Trim() != listBox.SelectedItem.ToString()) { this.Controls[ctrNm].Text = listBox.SelectedItem.ToString(); this.entity.FromTable = listBox.SelectedItem.ToString(); } } } }
private void DataSourceControl_Load(object sender, EventArgs e) { _ds = ModelDesignProject.GetDataSourceById(_funNode.Name); //数据集节点 LibTreeNode dsNode = new LibTreeNode(); dsNode.Name = _funNode.Name; dsNode.Text = ReSourceManage.GetResource(NodeType.DefDataSet); dsNode.NodeType = NodeType.DefDataSet; if (_ds.DefTables == null) { _ds.DefTables = new LibCollection <LibDefineTable>(); //自定义表节点 #region LibTreeNode defTBNode = new LibTreeNode(); defTBNode.NodeId = Guid.NewGuid().ToString(); defTBNode.Name = string.Format("{0}", _funNode.Name); defTBNode.Text = string.Format("{0}({1})", _funNode.Text, defTBNode.Name); defTBNode.NodeType = NodeType.DefindTable; dsNode.Nodes.Add(defTBNode); //this._defTBPropertylst = new List<DefTBProperty>(); DefTBProperty deftbp = new DefTBProperty(defTBNode.NodeId); deftbp.Dock = DockStyle.Fill; this._defTBPropertylst.Add(deftbp); this.splitContainer1.Panel2.Controls.Add(deftbp); LibDefineTable definetb = new LibDefineTable(); definetb.ID = defTBNode.NodeId; definetb.TableName = defTBNode.Name; definetb.DisplayName = defTBNode.Text; _ds.DefTables.Add(definetb); deftbp.SetPropertyValue(definetb, defTBNode); #endregion //数据结构表 #region LibTreeNode tablestruc = new LibTreeNode(); tablestruc.NodeId = Guid.NewGuid().ToString(); tablestruc.Name = string.Format("{0}", _funNode.Name); tablestruc.Text = string.Format("{0}-{1}", "数据表", _funNode.Name); tablestruc.NodeType = NodeType.TableStruct; defTBNode.Nodes.Add(tablestruc); //this._tbStructPropertylst = new List<TBStructProperty>(); TBStructProperty tbstructP = new TBStructProperty(tablestruc.NodeId); tbstructP.Dock = DockStyle.Fill; this._tbStructPropertylst.Add(tbstructP); this.splitContainer1.Panel2.Controls.Add(tbstructP); LibDataTableStruct tbstruct = new LibDataTableStruct(); tbstruct.ID = tablestruc.NodeId; tbstruct.Name = tablestruc.Name; tbstruct.DisplayName = tablestruc.Text; definetb.TableStruct = new LibCollection <LibDataTableStruct>(); definetb.TableStruct.Add(tbstruct); tbstructP.SetPropertyValue(tbstruct, tablestruc); #endregion } else { LibTreeNode node = null; LibTreeNode dtstructNode = null; LibTreeNode fieldNode = null; foreach (LibDefineTable item in _ds.DefTables) { node = new LibTreeNode(); node.NodeId = item.ID; node.Name = item.TableName; node.Text = string.Format("{0}({1})", item.DisplayName, item.TableName); node.NodeType = NodeType.DefindTable; dsNode.Nodes.Add(node); if (item.TableStruct != null) { foreach (LibDataTableStruct dtstruct in item.TableStruct) { #region 添加表结构节点 dtstructNode = new LibTreeNode(); dtstructNode.NodeId = dtstruct.ID; dtstructNode.Name = dtstruct.Name; dtstructNode.Text = string.Format("{0}-{1}", "数据表", dtstruct.Name); dtstructNode.NodeType = NodeType.TableStruct; node.Nodes.Add(dtstructNode); #endregion if (dtstruct.Fields != null) { foreach (LibField field in dtstruct.Fields) { #region 添加字段节点 fieldNode = new LibTreeNode(); fieldNode.NodeId = field.ID; fieldNode.Name = field.Name; fieldNode.Text = string.Format("{0}({1})", field.Name, field.DisplayName); fieldNode.NodeType = NodeType.Field; dtstructNode.Nodes.Add(fieldNode); #endregion } } } } } } this.treeView1.Nodes.Add(dsNode); this.treeView1.SelectedNode = dsNode; }
protected override void DoSetParam(string tag, params object[] param) { base.DoSetParam(tag, param); if (LibSysUtils.Compare(tag, "language")) { SDPCRL.COM.ModelManager.FormTemplate.LibFormPage fm = null; SDPCRL.COM.ModelManager.LibKeyValueCollection keyValueCollection = null; if (param.Length > 1) { ds = param[0] as LibDataSource; fm = param[1] as SDPCRL.COM.ModelManager.FormTemplate.LibFormPage; keyValueCollection = param[2] as SDPCRL.COM.ModelManager.LibKeyValueCollection; } if (keyValueCollection != null) { this.textBox1.Text = keyValueCollection.ID; languagedt = this.BllData.Getlanguagebydsid(keyValueCollection.ID); if (keyValueCollection.KeyValues != null) { foreach (LibKeyValue kv in keyValueCollection.KeyValues) { AddDataGridRow(string.Empty, kv.Key.ToString(), kv.Value.ToString()); } } } if (ds == null) { return; } this.textBox1.Text = ds.DSID; this.comboBox1.Items.Add(string.Empty); languagedt = this.BllData.Getlanguagebydsid(ds.DSID); foreach (LibDefineTable deftb in ds.DefTables) { foreach (LibDataTableStruct dt in deftb.TableStruct) { this.comboBox1.Items.Add(dt.Name); FillDataGrid(dt, false); } } if (fm != null) { DataTable dt = this.dataGridView1.DataSource as DataTable; DataRow row = null; if (dt != null) { AddDataGridRow(string.Empty, fm.FormId, fm.FormName); if (fm.FormGroups != null) { foreach (SDPCRL.COM.ModelManager.FormTemplate.LibFormGroup fg in fm.FormGroups) { AddDataGridRow(string.Empty, fg.FormGroupName, fg.FormGroupDisplayNm); } } if (fm.GridGroups != null) { foreach (SDPCRL.COM.ModelManager.FormTemplate.LibGridGroup gg in fm.GridGroups) { AddDataGridRow(string.Empty, gg.GridGroupName, gg.GridGroupDisplayNm); if (gg.GdButtons == null) { continue; } foreach (LibGridButton item in gg.GdButtons) { AddDataGridRow(string.Empty, item.GridButtonName, item.GridButtonDisplayNm); } } } if (fm.BtnGroups != null) { foreach (LibButtonGroup btngroup in fm.BtnGroups) { if (btngroup.LibButtons == null) { continue; } //if(btngroup .LibButtons !=null ) //{ foreach (LibButton btn in btngroup.LibButtons) { AddDataGridRow(string.Empty, btn.LibButtonName, btn.LibButtonDisplayNm); } //} } } } } } }
public override void TextAndBotton_Click(object sender, EventArgs e) { Control ctl = sender as Control; string ctrNm = ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, ""); Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; ListBox listBox = new ListBox(); listBox.Dock = DockStyle.Fill; p.Controls.Add(listBox); if (string.Compare(ctrNm, "fsfield_FromDataSource") == 0)//来源数据源 { string[] dsarray = ModelManager.GetAllDataSourceNm(string.Empty); if (dsarray != null && dsarray.Length > 0) { foreach (string item in dsarray) { listBox.Items.Add(item); } } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { if (this.Controls[ctrNm].Text.Trim() != listBox.SelectedItem.ToString()) { foreach (Control c in this.Controls) { if (c.GetType().Equals(typeof(TextBox))) { c.Text = string.Empty; } } this.Controls[ctrNm].Text = listBox.SelectedItem.ToString(); this.entity.FromDataSource = listBox.SelectedItem.ToString(); //this.Controls["fsfield_FromDefindTableNm"].Text = string.Empty; //this.Controls["fsfield_FromStructTableNm"].Text = string.Empty; //this.Controls["fsfield_FromFieldNm"].Text = string.Empty; } } } else if (string.Compare(ctrNm, "fsfield_FromDefindTableNm") == 0)//来源自定义表名 { if (!string.IsNullOrEmpty(this.Controls["fsfield_FromDataSource"].Text)) { this._ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text); if (this._ds != null && this._ds.DefTables != null) { foreach (LibDefineTable deftb in this._ds.DefTables) { listBox.Items.Add(deftb.TableName); } } } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { this.Controls[ctrNm].Text = listBox.SelectedItem.ToString(); this.entity.FromDefindTableNm = listBox.SelectedItem.ToString(); } } else if (string.Compare(ctrNm, "fsfield_FromStructTableNm") == 0)//来源数据表名 { if (!string.IsNullOrEmpty(this.Controls["fsfield_FromDefindTableNm"].Text)) { if (_ds == null) { _ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text); } LibDefineTable deftb = this._ds.DefTables.FindFirst("TableName", this.Controls["fsfield_FromDefindTableNm"].Text.Trim()); if (deftb != null) { foreach (LibDataTableStruct dt in deftb.TableStruct) { listBox.Items.Add(dt.Name); } } } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { this.Controls[ctrNm].Text = listBox.SelectedItem.ToString(); this.entity.FromStructTableNm = listBox.SelectedItem.ToString(); //foreach (LibDataTableStruct item in ) } } else if (string.Compare(ctrNm, "fsfield_FromFieldNm") == 0 || string.Compare(ctrNm, "fsfield_FromFieldDesc") == 0)//来源字段 { if (!string.IsNullOrEmpty(this.Controls["fsfield_FromStructTableNm"].Text)) { if (_ds == null) { _ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text); } LibDefineTable deftb = this._ds.DefTables.FindFirst("TableName", this.Controls["fsfield_FromDefindTableNm"].Text.Trim()); LibDataTableStruct dtstruct = deftb.TableStruct.FindFirst("Name", this.Controls["fsfield_FromStructTableNm"].Text.Trim()); if (dtstruct != null) { foreach (LibField f in dtstruct.Fields) { listBox.Items.Add(f.Name); } } } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { this.Controls[ctrNm].Text = listBox.SelectedItem.ToString(); if (string.Compare(ctrNm, "fsfield_FromFieldNm") == 0) { this.entity.FromFieldNm = listBox.SelectedItem.ToString(); } else { this.entity.FromFieldDesc = listBox.SelectedItem.ToString(); } } } else if (string.Compare(ctrNm, "fsfield_RelateFieldNm") == 0)//关联字段 { Panel p2 = new Panel(); p2.AutoScroll = true; LibDataTableStruct dtstruct = null; List <LibDataTableStruct> list = new List <LibDataTableStruct>(); //List<LibField> fields = new List<LibField>(); if (!string.IsNullOrEmpty(this.Controls["fsfield_FromStructTableNm"].Text)) { if (_ds == null) { _ds = ModelManager.GetDataSource(this.Controls["fsfield_FromDataSource"].Text); } List <int> indexs = null; foreach (LibDefineTable def in _ds.DefTables) { if (def.TableStruct == null) { continue; } list.AddRange(def.TableStruct.ToArray()); } LibDefineTable deftb = this._ds.DefTables.FindFirst("TableName", this.Controls["fsfield_FromDefindTableNm"].Text.Trim()); dtstruct = deftb.TableStruct.FindFirst("Name", this.Controls["fsfield_FromStructTableNm"].Text.Trim()); if (dtstruct != null) { listBox.SelectionMode = SelectionMode.MultiExtended; foreach (LibField f in dtstruct.Fields) { if (this.entity.RelateFieldNm == null || (this.entity.RelateFieldNm != null && this.entity.RelateFieldNm.FirstOrDefault(i => i.FromTableIndex == dtstruct.TableIndex && i.FieldNm == f.Name) == null)) { listBox.Items.Add(string.Format("{0}{2}{1}", dtstruct.Name, f.Name, SysConstManage.Point)); } } var relatetbs = list.Where(i => i.JoinTableIndex == dtstruct.TableIndex && i.TableIndex != dtstruct.TableIndex && i.Ignore).ToList(); while (relatetbs != null && relatetbs.Count > 0) { indexs = new List <int>(); foreach (LibDataTableStruct tb in relatetbs) { indexs.Add(tb.TableIndex); foreach (LibField f in tb.Fields) { if (this.entity.RelateFieldNm == null || (this.entity.RelateFieldNm != null && this.entity.RelateFieldNm.FirstOrDefault(i => i.FromTableIndex == tb.TableIndex && i.FieldNm == f.Name) == null)) { listBox.Items.Add(string.Format("{0}{2}{1}", tb.Name, f.Name, SysConstManage.Point)); } } } relatetbs = list.Where(i => indexs.Contains(i.JoinTableIndex) && i.TableIndex != i.JoinTableIndex && i.Ignore).ToList(); } } } if (this.entity.RelateFieldNm == null) { this.entity.RelateFieldNm = new List <LibRelateField>(); } RelateFieldControl relateFieldControl = new RelateFieldControl(listBox, list, this.entity.RelateFieldNm); relateFieldControl.Dock = DockStyle.Fill; p2.Controls.Add(relateFieldControl); DialogForm dialogForm = new DialogForm(p2); DialogResult dialog = dialogForm.ShowDialog(this); //FieldCollectionForm fielsform = new FieldCollectionForm(p); //DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { string text = string.Empty; SplitContainer ctr = relateFieldControl.Controls["splitContainer1"] as SplitContainer; foreach (Control c in ctr.Panel2.Controls) { RelateFieldProperty prop = c as RelateFieldProperty; prop.GetControlsValue(); } foreach (LibRelateField field in this.entity.RelateFieldNm) { if (text.Length > 0) { text += SysConstManage.Comma; } text += field.FieldNm; } //if (this.entity.RelateFieldNm == null) this.entity.RelateFieldNm = new List<LibRelateField>(); //this.entity.RelateFieldNm.Clear(); //LibRelateField relateField = null; //string text = string.Empty; //string tablenm = string.Empty; //string fldnm = string.Empty; //string[] array; //foreach (var item in listBox.SelectedItems) //{ // array = item.ToString().Split(SysConstManage.Point); // tablenm = array[0]; // LibDataTableStruct tableStruct = list.FirstOrDefault(i => i.Name == tablenm); // LibField field = tableStruct.Fields.FindFirst("Name", array[1]); // relateField = new LibRelateField(); // relateField.ID = Guid.NewGuid().ToString(); // relateField.FieldNm = field.Name; // relateField.DisplayNm = field.DisplayName; // relateField.AliasName = field.AliasName; // relateField.FieldType = field.FieldType; // relateField.FromTableIndex = tableStruct.TableIndex; // this.entity.RelateFieldNm.Add(relateField); // if (text.Length > 0) { text += SysConstManage.Comma; } // text += field.Name; //} this.Controls[ctrNm].Text = text; } } }