Example #1
0
        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;
                            }
                        }
                    }
                }
            }
        }
Example #2
0
        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);
                    }
                }
            }
        }
Example #3
0
        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;
            }
        }
Example #4
0
        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();
                    }
                }
            }
        }
Example #5
0
        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;
            }
        }
Example #6
0
        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();
                    }
                }
            }
        }
Example #7
0
        /// <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;
            }
        }
Example #8
0
        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();
        }
Example #9
0
        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;
                }
            }
        }