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, "tran_SrcProgId") == 0 || string.Compare(ctrNm, "tran_TargetProgId") == 0)//来源单ProgId { string[] progarray = ModelManager.GetAllProgId(string.Empty); if (progarray != null && progarray.Length > 0) { foreach (string item in progarray) { 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(); if (ctrNm == "tran_SrcProgId") { this.entity.SrcProgId = listBox.SelectedItem.ToString(); } else { this.entity.TargetProgId = listBox.SelectedItem.ToString(); var formsource = ModelManager.GetFormSource(this.entity.TargetProgId); if (formsource != null) { this.entity.TargetPackage = formsource.Package; this.Controls["tran_TargetPackage"].Text = formsource.Package; } } } } } }
private void Frombtn_Click(object sender, EventArgs e) { string[] allkeyvalues = ModelManager.GetAllKeyValuesNm(string.Empty); Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pkeyvaluescollection"; p.AutoScroll = true; ListBox listBox = new ListBox(); listBox.Dock = DockStyle.Fill; listBox.Name = "keyvaluelist"; if (allkeyvalues != null) { foreach (string kv in allkeyvalues) { listBox.Items.Add(kv); } } p.Controls.Add(listBox); FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { string nm = listBox.SelectedItem.ToString(); LibKeyValueCollection obj = ModelManager.GetKeyValues(nm); Control ctl = sender as Control; Control container = ctl.Parent.Parent; ListBox box = container.Controls["_listbox"] as ListBox; if (obj != null && obj.KeyValues != null) { box.Items.Clear(); foreach (LibKeyValue item in obj.KeyValues) { item.FromkeyValueID = nm; box.Items.Add(item); } } } }
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 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(); } } } }
/// <summary> 表结构节点上的右键菜单</summary> /// <param name="sender"></param> /// <param name="e"></param> private void contextMenuStrip3_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { LibTreeNode curentNode = (LibTreeNode)this.treeView1.SelectedNode; LibDefineTable defineTB = _ds.DefTables.FindFirst("ID", ((LibTreeNode)curentNode.Parent).NodeId); LibDataTableStruct currentTBStruct = defineTB.TableStruct.FindFirst("ID", curentNode.NodeId); if (currentTBStruct.Fields == null) { currentTBStruct.Fields = new LibCollection <LibField>(); } switch (e.ClickedItem.Name) { case "CreateField": //新建字段 #region //LibTreeNode fieldNode = new LibTreeNode(); //fieldNode.NodeId = Guid.NewGuid().ToString(); //fieldNode.Name = string.Format("{0}_Field{1}", currentTBStruct.Name, currentTBStruct.Fields.Count + 1); //fieldNode.Text = fieldNode.Name; //fieldNode.NodeType = NodeType.Field; //curentNode.Nodes.Add(fieldNode); //DefFieldProperty fieldP = new DefFieldProperty(fieldNode.NodeId); //fieldP.Dock = DockStyle.Fill; //this._fieldPropertylst.Add(fieldP); //this.splitContainer1.Panel2.Controls.Add(fieldP); //LibField field = new LibField(); //field.ID = fieldNode.NodeId; //field.Name = fieldNode.Name; //field.DisplayName = fieldNode.Text; //currentTBStruct.Fields.Add(field); //fieldP.SetPropertyValue(field, fieldNode); string fieldnm = string.Format("Field{0}", currentTBStruct.Fields.Count + 1); DoCreateField(fieldnm, fieldnm, null, curentNode, currentTBStruct); UpdateTabPageText(); break; #endregion case "CreatesysFields": //添加系统字段 Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; ListBox listBox = new ListBox(); listBox.Dock = DockStyle.Fill; listBox.SelectionMode = SelectionMode.MultiExtended; p.Controls.Add(listBox); foreach (LibSysField sysfld in ModelManager.Sysfields) { listBox.Items.Add(sysfld); } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { foreach (LibSysField item in listBox.SelectedItems) { DoCreateField(string.Empty, string.Empty, item, curentNode, currentTBStruct); } UpdateTabPageText(); } break; } }
public override void TextAndBotton_Click(object sender, EventArgs e) { Panel p = new Panel(); p.Dock = DockStyle.Fill; p.Name = "pfieldcollection"; p.AutoScroll = true; CheckBox chkb; List <string> target = null; PropertyInfo targetobj = null; Control ctl = sender as Control; PropertyInfo[] propertis = this.entity.GetType().GetProperties(); foreach (PropertyInfo info in propertis) { object[] attrArray = info.GetCustomAttributes(typeof(LibAttributeAttribute), true); if (attrArray.Length > 0) { LibAttributeAttribute attr = attrArray[0] as LibAttributeAttribute; if (string.Compare(attr.ControlNm, ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, "")) == 0) { targetobj = info; target = (List <string>)info.GetValue(this.entity, null); } } } foreach (LibField f in this.entity.Fields) { chkb = new CheckBox(); chkb.Checked = target == null ?false : target.Contains(f.Name); chkb.Name = f.Name; chkb.Size = new System.Drawing.Size(100, 21);; chkb.Text = string.Format("{0}({1})", f.Name, f.DisplayName); chkb.Dock = DockStyle.Top; chkb.Location = new System.Drawing.Point(0, 20); p.Controls.Add(chkb); } FieldCollectionForm fielsform = new FieldCollectionForm(p); DialogResult dialog = fielsform.ShowDialog(this); if (dialog == DialogResult.OK) { StringBuilder val = new StringBuilder(); if (target == null) { target = new List <string>(); } target.Clear(); foreach (CheckBox item in p.Controls) { if (item.Checked) { //if (!target.Contains(item.Name)) target.Add(item.Name); if (val.Length > 0) { val.Append(SysConstManage.Comma); } val.Append(item.Name); } } if (targetobj != null && targetobj.GetGetMethod() != null) { targetobj.SetValue(this.entity, target, null); } #region 控件赋值 this.Controls[ctl.Name.Replace(SysConstManage.BtnCtrlNmPrefix, "")].Text = val.ToString(); #endregion } fielsform.Dispose(); }
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; } } }