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; } }
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.ReportPanel: if (this._rptproperty == null) { _rptproperty = new ReportSourceProperty(); this.splitContainer1.Panel2.Controls.Add(_rptproperty); } SetPanel2ControlsVisible(_rptproperty); _rpt.ReportName = string.IsNullOrEmpty(_rpt.ReportName) ? _funNode.Text : _rpt.ReportName; _rpt.Package = string.IsNullOrEmpty(_rpt.Package) ? _funNode.Package : _rpt.Package; //if (ModelDesignProject.ExitsDataSource(_fm.FormId, _fm.Package)) //{ // _fm.DSID = _fm.FormId; //} _rptproperty.SetPropertyValue(_rpt, libnode); break; case NodeType.GridGroup: if (_gridgrouplst != null) { foreach (ReportGridProperty item in _gridgrouplst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { ReportGridProperty gridgroupp = new ReportGridProperty(libnode.NodeId); gridgroupp.Dock = DockStyle.Fill; this._gridgrouplst.Add(gridgroupp); this.splitContainer1.Panel2.Controls.Add(gridgroupp); gridgroupp.SetPropertyValue(_rpt.GridGroups.FindFirst("GridGroupID", libnode.NodeId), libnode); SetPanel2ControlsVisible(gridgroupp); } } break; case NodeType.GridGroup_Field: if (_reportFieldlst != null) { foreach (ReportFieldProperty item in _reportFieldlst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { ReportFieldProperty gdgroupfdp = new ReportFieldProperty(libnode.NodeId); gdgroupfdp.Dock = DockStyle.Fill; this._reportFieldlst.Add(gdgroupfdp); this.splitContainer1.Panel2.Controls.Add(gdgroupfdp); LibReportGrid librptgd = _rpt.GridGroups.FindFirst("GridGroupID", ((LibTreeNode)libnode.Parent).NodeId); gdgroupfdp.SetPropertyValue(librptgd.ReportFields.FindFirst("ID", libnode.NodeId), libnode); SetPanel2ControlsVisible(gdgroupfdp); } } break; case NodeType.ReportContainer: if (_containerlst != null) { foreach (ReportContainerProperty item in _containerlst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { ReportContainerProperty container = new ReportContainerProperty(libnode.NodeId); container.Dock = DockStyle.Fill; this._containerlst.Add(container); this.splitContainer1.Panel2.Controls.Add(container); container.SetPropertyValue(_rpt.Containers.FindFirst("ContainerID", libnode.NodeId), libnode); SetPanel2ControlsVisible(container); } } break; case NodeType.ReportRow: if (_rowlst != null) { foreach (ReportRowProperty item in _rowlst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { ReportRowProperty row = new ReportRowProperty(libnode.NodeId); row.Dock = DockStyle.Fill; this._rowlst.Add(row); this.splitContainer1.Panel2.Controls.Add(row); LibReportContainer container = _rpt.Containers.FindFirst("ContainerID", ((LibTreeNode)libnode.Parent).NodeId); row.SetPropertyValue(container.ReportRows.FindFirst("RowID", libnode.NodeId), libnode); SetPanel2ControlsVisible(row); } } break; case NodeType.ReportCol: if (_collst != null) { foreach (ReportColumnProperty item in _collst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { ReportColumnProperty col = new ReportColumnProperty(libnode.NodeId); col.Dock = DockStyle.Fill; this._collst.Add(col); this.splitContainer1.Panel2.Controls.Add(col); LibReportContainer container = _rpt.Containers.FindFirst("ContainerID", ((LibTreeNode)libnode.Parent.Parent).NodeId); LibReportRow reportRow = container.ReportRows.FindFirst("RowID", ((LibTreeNode)libnode.Parent).NodeId); col.SetPropertyValue(reportRow.ReportCols.FindFirst("ColumnID", libnode.NodeId), libnode); SetPanel2ControlsVisible(col); } } break; case NodeType.ReportElement: if (_elemlst != null) { foreach (ReportElementProperty item in _elemlst) { if (string.Compare(item.Name, libnode.NodeId) == 0) { SetPanel2ControlsVisible(item); exists = true; break; } } if (!exists) //还未创建对应的控件 { ReportElementProperty ele = new ReportElementProperty(libnode.NodeId); ele.Dock = DockStyle.Fill; this._elemlst.Add(ele); this.splitContainer1.Panel2.Controls.Add(ele); LibReportContainer container = _rpt.Containers.FindFirst("ContainerID", ((LibTreeNode)libnode.Parent.Parent.Parent).NodeId); LibReportRow reportRow = container.ReportRows.FindFirst("RowID", ((LibTreeNode)libnode.Parent.Parent).NodeId); LibReportColumn column = reportRow.ReportCols.FindFirst("ColumnID", ((LibTreeNode)libnode.Parent).NodeId); ele.SetPropertyValue(column.Elements.FindFirst("ElementID", libnode.NodeId), libnode); SetPanel2ControlsVisible(ele); } } break; } }