/// <summary> /// 数据集节点上的右键菜单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e) { LibTreeNode curentNode = (LibTreeNode)this.treeView1.SelectedNode; switch (e.ClickedItem.Name) { case "CreateDefineTable": //新建自定义表 #region LibTreeNode defTBNode = new LibTreeNode(); defTBNode.NodeId = Guid.NewGuid().ToString(); defTBNode.Name = string.Format("DefineTable{0}", _ds.DefTables.Count + 1); defTBNode.Text = defTBNode.Name; defTBNode.NodeType = NodeType.DefindTable; curentNode.Nodes.Add(defTBNode); 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 break; } }
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; }
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { LibTreeNode libnode = (LibTreeNode)e.Node; if (libnode == null) { return; } bool exists = false; switch (libnode.NodeType) { case NodeType.DefDataSet: if (this._dsProperty == null) { _dsProperty = new DataSourceProperty(); this.splitContainer1.Panel2.Controls.Add(_dsProperty); } SetPanel2ControlsVisible(_dsProperty); _ds.DataSourceName = string.IsNullOrEmpty(_ds.DataSourceName) ? _funNode.Text : _ds.DataSourceName; _ds.Package = string.IsNullOrEmpty(_ds.Package) ? _funNode.Package : _ds.Package; _dsProperty.SetPropertyValue(_ds, libnode); break; case NodeType.DefindTable: if (this._defTBPropertylst != null) { foreach (DefTBProperty item in _defTBPropertylst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { DefTBProperty deftbp = new DefTBProperty(libnode.NodeId); deftbp.Dock = DockStyle.Fill; this._defTBPropertylst.Add(deftbp); this.splitContainer1.Panel2.Controls.Add(deftbp); deftbp.SetPropertyValue(_ds.DefTables.FindFirst("ID", libnode.NodeId), libnode); SetPanel2ControlsVisible(deftbp); } } break; case NodeType.TableStruct: if (this._tbStructPropertylst != null) { foreach (TBStructProperty item in _tbStructPropertylst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { TBStructProperty tbstrucp = new TBStructProperty(libnode.NodeId); tbstrucp.Dock = DockStyle.Fill; this._tbStructPropertylst.Add(tbstrucp); this.splitContainer1.Panel2.Controls.Add(tbstrucp); LibDefineTable deftb = _ds.DefTables.FindFirst("ID", ((LibTreeNode)libnode.Parent).NodeId); tbstrucp.SetPropertyValue(deftb.TableStruct.FindFirst("ID", libnode.NodeId), libnode); SetPanel2ControlsVisible(tbstrucp); } } break; case NodeType.Field: if (this._fieldPropertylst != null) { foreach (DefFieldProperty item in _fieldPropertylst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { DefFieldProperty fieldp = new DefFieldProperty(libnode.NodeId); fieldp.Dock = DockStyle.Fill; this._fieldPropertylst.Add(fieldp); this.splitContainer1.Panel2.Controls.Add(fieldp); LibDefineTable deftb = _ds.DefTables.FindFirst("ID", ((LibTreeNode)libnode.Parent.Parent).NodeId); LibDataTableStruct dtstruct = deftb.TableStruct.FindFirst("ID", ((LibTreeNode)libnode.Parent).NodeId); fieldp.SetPropertyValue(dtstruct.Fields.FindFirst("ID", libnode.NodeId), libnode); SetPanel2ControlsVisible(fieldp); } } break; } }