Ejemplo n.º 1
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;
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }