コード例 #1
0
        /// <summary>
        /// Calculate grouped result
        /// </summary>
        /// <param name="i_Table">data source</param>
        public override void CalculateResult(DataTable i_Table)
        {
            //If have no data source ,clear group struct
            if (i_Table == null)
            {
                this.RootGroupInfo.ClearGroupResult(this._RootGroupInfo);

                _HaveData = false;

                return;
            }

            _HaveData = true;

            if (this.RootGroupInfo.Summaries == null)
            {
                this.RootGroupInfo.Summaries = new GroupSummaryCollection();
            }
            if (this.RootGroupInfo.SubGroupInfos == null || this.RootGroupInfo.SubGroupInfos.Count == 0)
            {
                this.RootGroupInfo.SubGroupInfos = new GroupInfoCollection();

                this.RootGroupInfo.SubGroupInfos.Add(new FieldGroupInfo(""));
            }
            if (MatrixInfo == null)
            {
                this.MatrixInfo = new MatrixInfo(RootGroupInfo, RootGroupInfo.SubGroupInfos[0], null, null);
            }
            else
            {
                this.MatrixInfo = MatrixInfo.CopyFrom(RootGroupInfo, MatrixInfo);
            }

            this.MatrixInfo.MatrixDisplay = this.MatrixDisplay;
            this.MatrixInfo.GridInfo.Apply(this.GridInfo);

            //Filter rows
            Webb.Collections.Int32Collection m_Rows = new Int32Collection();

            if (this.ExControl != null && this.ExControl.Report != null)
            {
                m_Rows = this.ExControl.Report.Filter.GetFilteredRows(i_Table);                        //2009-5-25 11:02:57@Simon Add this Code
            }


            m_Rows = this.OneValueScFilter.Filter.GetFilteredRows(i_Table, m_Rows);

            m_Rows = this.RepeatFilter.Filter.GetFilteredRows(i_Table, m_Rows);

            this.Filter = AdvFilterConvertor.GetAdvFilter(DataProvider.VideoPlayBackManager.AdvReportFilters, this.Filter); //2009-4-29 11:37:37@Simon Add UpdateAdvFilter

            m_Rows = this.Filter.GetFilteredRows(i_Table, m_Rows);                                                          //06-04-2008@Scott

            m_Rows.CopyTo(this.FilteredRows);

            MatrixInfo.CalculateMatrixResult(i_Table, m_Rows);
        }