Esempio n. 1
0
        public void AddFilteredByNameSet(Level lev, string LessOrEq, string GrOrEq, bool Prompt)
        {
            FilteredByNameSet levSet = new FilteredByNameSet(
                null,
                lev.Hierarchy,
                lev,
                LessOrEq,
                GrOrEq);

            levSet.Prompt = Prompt;

            if (lev.Hierarchy.Axis.Ordinal == 2)
            {
                MembersAggregate aggr = lev.Hierarchy.FilterMember as MembersAggregate;
                if (aggr != null)
                {
                    aggr.AddMember(levSet);                     //if aggegated
                }
                else
                {
                    lev.Hierarchy.AddMember(levSet, true);
                }
            }
            else
            {
                lev.Hierarchy.AddMember(levSet, true);
            }
        }
Esempio n. 2
0
        public void SetHierarchyAggregate(string UniqueName, bool Value)
        {
            Hierarchy hier = _report.Schema.Hierarchies[UniqueName];

            if (hier == null)
            {
                throw new Exception("Error: invalid identifier");
            }

            if (Value == true)
            {
                MembersAggregate aggr = new MembersAggregate(null, hier);
                hier.AddMember(aggr, true);
            }
            else
            {
                hier.AddMember(hier.Levels[0].DefaultMember, true);
            }
        }
Esempio n. 3
0
        private void RecursiveRemoveMembers(SchemaMembers smems, bool isAggr, ref SortedList ReAddDataMembers)
        {
            for (int i = 0; i < smems.Count; i++)
            {
                SchemaMember smem = smems[i];

                // attempt to remove
                if (isAggr)
                {
                    if (smem.UniqueName != smem.Hierarchy.FilterMember.UniqueName)
                    {
                        MembersAggregate filtMem = (MembersAggregate)smem.Hierarchy.FilterMember;
                        // check if readd
                        Member mem = (Member)filtMem.Members[smem.UniqueName];
                        if (mem != null)
                        {
                            ReAddDataMembers.Add(mem.UniqueName, mem);
                        }

                        //remove
                        filtMem.RemoveMember(smem.UniqueName);
                    }
                }
                else
                {
                    // check if readd
                    Member mem = smem.Hierarchy.DataMembers[smem.UniqueName];
                    if (mem != null)
                    {
                        ReAddDataMembers.Add(mem.UniqueName, mem);
                    }

                    //remove
                    smem.Hierarchy.RemoveMember(smem);
                }

                if (smem.IsOpen)
                {
                    this.RecursiveRemoveMembers(smem.Children, isAggr, ref ReAddDataMembers);
                }
            }
        }
Esempio n. 4
0
        public void AddMembersAndRemoveSiblings(System.Collections.Specialized.StringCollection UniqueNames, bool MultiSelect)
        {
            if (MultiSelect)
            {
                for (int j = 0; j < _report.Axes.Count; j++)
                {
                    for (int i = 0; i < _report.Axes[j].Hierarchies.Count; i++)
                    {
                        Hierarchy hier = _report.Axes[j].Hierarchies[i];
                        if (hier.IsOpen)
                        {
                            bool IsAggregateHierarchy = (hier.Axis.Ordinal == 2 && hier.FilterMember is MembersAggregate?true:false);                         //only aggregate can be multi-selected

                            if (IsAggregateHierarchy == false && hier.Axis.Ordinal == 2)
                            {
                                continue;                                 //beacuse if MultiSelect memebrs are  not applicable to non-aggr hier on filter
                            }
//							AddMembersAndRemoveSiblings(hier.SchemaMembers, UniqueNames ,  IsAggregateHierarchy); //it's not filter OR aggr hier on filter
                            // deal with schema members
                            SortedList reAddMembers = new SortedList();
                            this.RecursiveRemoveMembers(hier.SchemaMembers, IsAggregateHierarchy, ref reAddMembers);
                            this.AddMembers(hier, UniqueNames, reAddMembers);

                            // deal with calc members
                            if (IsAggregateHierarchy)
                            {
                                MembersAggregate maggr = hier.FilterMember as MembersAggregate;
                                if (maggr != null)
                                {
                                    for (int n = 0; n < maggr.Members.Count; n++)
                                    {
                                        if (UniqueNames.Contains(maggr.Members[n].UniqueName) == false)
                                        {
                                            maggr.Members.RemoveAt(n);
                                            n--;
                                        }
                                    }
                                }
                            }
                            else
                            {
                                for (int n = 0; n < hier.CalculatedMembers.Count; n++)
                                {
                                    if (UniqueNames.Contains(hier.CalculatedMembers[n].UniqueName) == false)
                                    {
                                        hier.CalculatedMembers.RemoveAt(n);
                                        n--;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            else
            {
                // axis2
                // UniqueNames are actually Identifiers
                for (int i = 0; i < UniqueNames.Count; i++)
                {
                    SchemaMember mem = this.SchemaMemberFromIdentifier(UniqueNames[i]);
                    if (mem != null)
                    {
                        mem.Hierarchy.AddMember(mem, true);
                    }
                }
            }
        }
        private void CreateMemHierarchy(short AxisOrdinal, HtmlTable hostTable, Member mem, bool HierIsAggregated, byte TreeDepth, bool autoSelect)
        {
            //do not display aggregate, display undlying calc members instead
            if (HierIsAggregated == true && mem.UniqueName == mem.Hierarchy.FilterMember.UniqueName)
            {
                MembersAggregate maggr = mem.Hierarchy.FilterMember as MembersAggregate;
                if (maggr != null)
                {
                    for (int i = 0; i < maggr.Members.Count; i++)
                    {
                        CalculatedMember cmem = maggr.Members[i] as CalculatedMember;
                        if (cmem != null)
                        {
                            this.CreateMemHierarchy(AxisOrdinal, hostTable, cmem, HierIsAggregated, TreeDepth, false);                             // recursion
                        }
                    }
                }
                return;
            }

            string       memIdentifier         = _contr.IdentifierFromSchemaMember(mem);
            string       hierIdentifier        = mem.Hierarchy.Axis.Ordinal.ToString() + ":" + mem.Hierarchy.Ordinal.ToString();
            bool         memIsSelected         = false;
            bool         memIsOpen             = false;
            bool         memIsPlaceholder      = false;
            bool         memAutoSelectChildren = (mem.Hierarchy.CalculatedMembers.GetMemberChildrenSet(mem.UniqueName) != null);
            SchemaMember smem = mem as SchemaMember;

            if (smem != null)
            {
                memIsOpen        = smem.IsOpen;
                memIsPlaceholder = smem.IsPlaceholder;
            }

            if (HierIsAggregated)
            {
                memIsSelected = (((MembersAggregate)mem.Hierarchy.FilterMember).Members[mem.UniqueName] != null?true:false);
            }
            else
            {
                memIsSelected = (mem.Hierarchy.GetMember(mem.UniqueName) != null);
            }

            HtmlTableRow  tr = new HtmlTableRow();
            HtmlTableCell td;

            System.Web.UI.WebControls.Button btn;
            Literal lit;

            // --- node contr col--
            td = new HtmlTableCell();
            td.Attributes.Add("class", "sel_C1");
            td.NoWrap = true;
            tr.Cells.Add(td);

            // --- node name col--
            td = new HtmlTableCell();

            lit = new Literal();
            for (int i = 0; i < TreeDepth; i++)
            {
                lit.Text = lit.Text + "&nbsp;&nbsp;";
            }
            td.Controls.Add(lit);

            if (memIsOpen)
            {
                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Close";
                btn.ID       = "sel_close:" + memIdentifier;
                btn.CssClass = "sel_close";
                td.Controls.Add(btn);
            }
            else
            {
                if (mem.CanDrillDown)
                {
                    btn          = new System.Web.UI.WebControls.Button();
                    btn.ToolTip  = "Open";
                    btn.ID       = "sel_open:" + memIdentifier;
                    btn.CssClass = "sel_open";
                    td.Controls.Add(btn);
                }
                else
                {
                    // no image
                    lit.Text = lit.Text + "&nbsp;&nbsp;&nbsp;";
                }
            }


            if (memIsPlaceholder == false)
            {
                if (AxisOrdinal == 2 && HierIsAggregated == false)
                {
                    HtmlInputRadioButton radio = new HtmlInputRadioButton();
                    radio.Name            = "m:" + hierIdentifier;
                    radio.ID              = "m:" + memIdentifier;
                    radio.EnableViewState = false;
                    radio.Checked         = (memIsSelected || autoSelect);
                    radio.Disabled        = autoSelect;
                    radio.Attributes.Add("class", "sel_chk");
                    td.Controls.Add(radio);
                }
                else
                {
                    HtmlInputCheckBox chk = new HtmlInputCheckBox();
                    chk.ID = "m:" + mem.UniqueName;                   //note, UniqueName !
                    chk.EnableViewState = false;
                    chk.Checked         = (memIsSelected || autoSelect);
                    chk.Disabled        = autoSelect;
                    chk.Attributes.Add("class", "sel_chk");
                    td.Controls.Add(chk);
                }
            }

            lit      = new Literal();
            lit.Text = mem.Name;
            td.Controls.Add(lit);

            td.Attributes.Add("class", "sel_C");
            td.NoWrap = true;
            tr.Cells.Add(td);


            // --- node select col--
            td = new HtmlTableCell();

            if (AxisOrdinal != 2 && memIsOpen)
            {
                if (!memAutoSelectChildren)
                {
                    btn          = new System.Web.UI.WebControls.Button();
                    btn.ToolTip  = "Auto-Select Children";
                    btn.ID       = "sel_selauto:" + memIdentifier;
                    btn.CssClass = "sel_selauto";
                    td.Controls.Add(btn);

                    btn          = new System.Web.UI.WebControls.Button();
                    btn.ToolTip  = "Select Children";
                    btn.ID       = "sel_selall:" + memIdentifier;
                    btn.CssClass = "sel_selall";
                    td.Controls.Add(btn);
                }

                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Deselect All Children";
                btn.ID       = "sel_deselall:" + memIdentifier;
                btn.CssClass = "sel_deselall";
                td.Controls.Add(btn);
            }

            td.Attributes.Add("class", "sel_C2");
            td.NoWrap = true;
            tr.Cells.Add(td);


            hostTable.Rows.Add(tr);


            if (memIsOpen == false)
            {
                return;
            }

            // next level members if it's schema member
            TreeDepth++;
            if (smem != null)
            {
                for (int j = 0; j < smem.Children.Count; j++)
                {
                    CreateMemHierarchy(AxisOrdinal, hostTable, smem.Children[j], HierIsAggregated, TreeDepth, memAutoSelectChildren);
                }
            }
        }
        private void CreateHierarchy(short AxisOrdinal, HtmlTable hostTable, Hierarchy hier, byte TreeDepth)
        {
            //string hierIdentifier=_contr.IdentifierFromHierarchy(hier);
            bool             hierIsAggregated = false;
            bool             hierIsMeasures   = (hier.UniqueName == "[Measures]");
            MembersAggregate aggr             = hier.FilterMember as MembersAggregate;

            if (aggr != null)
            {
                hierIsAggregated = true;
            }

            HtmlTableRow  tr = new HtmlTableRow();
            HtmlTableCell td;

            System.Web.UI.WebControls.Button btn;

            // --- node contr col--
            tr = new HtmlTableRow();
            td = new HtmlTableCell();
            if (AxisOrdinal != 2)
            {
                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Move To Filter";
                btn.ID       = "sel_del:" + hier.UniqueName;        //hierIdentifier;
                btn.CssClass = "sel_del";
                td.Controls.Add(btn);

                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Move Up";
                btn.ID       = "sel_up:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_up";
                td.Controls.Add(btn);

                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Move Down";
                btn.ID       = "sel_down:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_down";
                td.Controls.Add(btn);
            }
            else
            {
                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Move To Row";
                btn.ID       = "sel_torow:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_torow";
                td.Controls.Add(btn);

                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Move To Column";
                btn.ID       = "sel_tocol:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_tocol";
                td.Controls.Add(btn);
            }

            td.Attributes.Add("class", "sel_C1");
            td.NoWrap = true;
            tr.Cells.Add(td);

            // --- node name col--
            td = new HtmlTableCell();

            Literal lit = new Literal();

            for (int i = 0; i < TreeDepth; i++)
            {
                lit.Text = lit.Text + "&nbsp;&nbsp;";
            }
            td.Controls.Add(lit);

            btn = new System.Web.UI.WebControls.Button();
            if (hier.IsOpen)
            {
                btn.ToolTip  = "Close";
                btn.ID       = "sel_hclose:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_close";
            }
            else
            {
                btn.ToolTip  = "Open";
                btn.ID       = "sel_hopen:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_open";
            }
            td.Controls.Add(btn);

            lit      = new Literal();
            lit.Text = hier.Caption;
            td.Controls.Add(lit);
            td.Attributes.Add("class", "sel_C");
            td.NoWrap = true;
            tr.Cells.Add(td);


            // --- node select col--
            td = new HtmlTableCell();

            if (AxisOrdinal != 2 && hier.IsOpen && !hierIsMeasures)
            {
                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Select Children";
                btn.ID       = "sel_hselall:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_selall";
                td.Controls.Add(btn);

                btn          = new System.Web.UI.WebControls.Button();
                btn.ToolTip  = "Deselect All Children";
                btn.ID       = "sel_hdeselall:" + hier.UniqueName;       //hierIdentifier;
                btn.CssClass = "sel_deselall";
                td.Controls.Add(btn);
            }
            else if (AxisOrdinal == 2 && !hierIsMeasures)
            {
                btn = new System.Web.UI.WebControls.Button();
                if (hierIsAggregated)
                {
                    btn.ToolTip  = "Set Aggregate Off";
                    btn.ID       = "sel_aggr_off:" + hier.UniqueName;           //hierIdentifier;
                    btn.CssClass = "sel_aggr_on";
                }
                else
                {
                    btn.ToolTip  = "Set Aggregate On";
                    btn.ID       = "sel_aggr_on:" + hier.UniqueName;           //hierIdentifier;
                    btn.CssClass = "sel_aggr_off";
                }
                td.Controls.Add(btn);
            }

            td.Attributes.Add("class", "sel_C2");
            td.NoWrap = true;
            tr.Cells.Add(td);



            hostTable.Rows.Add(tr);



            if (hier.IsOpen == false)
            {
                return;
            }


            TreeDepth++;
            // data members level depth=0
            for (int j = 0; j < hier.SchemaMembers.Count; j++)
            {
                CreateMemHierarchy(AxisOrdinal, hostTable, hier.SchemaMembers[j], hierIsAggregated, TreeDepth, false);
            }

            // calc members
            for (int j = 0; j < hier.CalculatedMembers.Count; j++)
            {
                CreateMemHierarchy(AxisOrdinal, hostTable, hier.CalculatedMembers[j], hierIsAggregated, 0, false);
            }
        }