示例#1
0
        public void AppendFrom(Report report, SemiRowsContainer semirowscontainer, ShowStyle showstyle)
        {
            SemiRows semirows = semirowscontainer.GetABlock();

            showstyle = HandleNoGroupHeader(report, showstyle);
            AppendSemiRows(report, semirows, showstyle, null);
        }
示例#2
0
        public void AppendFromWait(Report report, SemiRowsContainer semirowscontainer, ShowStyle showstyle, System.Drawing.Graphics g)
        {
            SemiRows semirows = semirowscontainer.GetABlockWait();

            showstyle = HandleNoGroupHeader(report, showstyle);
            AppendSemiRows(report, semirows, showstyle, g); //report.FreeViewStyle == FreeViewStyle.MergeCell ?ShowStyle.NoGroupHeader :ShowStyle.Normal
        }
示例#3
0
        public void AppendFrom(Report report, SemiRowsContainer semirowscontainer)
        {
            ShowStyle ss       = HandleNoGroupHeader(report, ShowStyle.NoGroupHeader);
            SemiRows  semirows = semirowscontainer.GetABlock();

            AppendSemiRows(report, semirows, ss, null);
        }
示例#4
0
 private void OnSemiRowsComing(SemiRows srs)
 {
     if (SemiRowsComing != null)
     {
         SemiRowsComing(srs);
     }
 }
        public override void BuildRows()
        {
            SemiRows semirows = _semirowscontainer.GetABlock();

            HandleSummaryRow(semirows);
            if (_currenttable != null)
            {
                FillDataTable(semirows);
            }
            if ((_currentmetrix as Cell).Visible)
            {
                if ((_currentmetrix as Cell).Tag == null)
                {
                    (_currentmetrix as Cell).Tag = new SemiRowsContainerPerhaps4Matrix(100);//(_currentmetrix as IIndicatorMetrix).PageSize
                }
                ((SemiRowsContainer)(_currentmetrix as Cell).Tag).AddSemiRows(semirows);
                if (_rowsheight == Int32.MaxValue)
                {
                    return;
                }
                _rows.AppendFrom(_currentreport, semirows);
                _rowsheight = RowsHeight;
                if (_rowsheight >= (_currentmetrix as Cell).Height)
                {
                    _rowsheight = Int32.MaxValue;
                }
            }
        }
示例#6
0
 protected virtual void _semirowscontainer_SemiRowsComing(SemiRows semirows)
 {
     _semirowscontainer.AddSemiRows(semirows);
     if (RowsComing != null)
     {
         InvokeEvent(RowsComing, new object[] { null, null });
     }
 }
        private void FillDataTable(SemiRows semirows)
        {
            foreach (SemiRow semirow in semirows)
            {
                if (semirow.Level == 0)
                {
                    continue;
                }
                DataRow dr = _currenttable.NewRow();
                _currenttable.Rows.Add(dr);

                string groupkey = null;
                foreach (string key in _captiontoname.Keys)
                {
                    object o = _captiontoname[key];
                    if (o != null)
                    {
                        if (o is string)
                        {
                            string v = semirow[o.ToString()].ToString();
                            if (v == "")
                            {
                                dr[key] = DBNull.Value;
                            }
                            else
                            {
                                dr[key] = v;
                            }
                        }
                        else if (o is SimpleArrayList)
                        {
                            SimpleArrayList sal = o as SimpleArrayList;
                            StringBuilder   sb  = new StringBuilder();
                            foreach (string s in sal)
                            {
                                if (sb.Length > 0)
                                {
                                    sb.Append(" ");
                                }
                                sb.Append(semirow[s].ToString());
                            }
                            groupkey = sb.ToString();
                            dr[key]  = groupkey;
                        }
                    }
                }
                if (_cellnametocolumnname != null)
                {
                    DrillData dd = new DrillData(_viewid, ((Cell)_currentmetrix).Name);
                    foreach (string key in _cellnametocolumnname.Keys)
                    {
                        dd.Add(_cellnametocolumnname[key].ToString(), semirow[key]);
                    }

                    _chartdrilldata.Add(groupkey, dd);
                }
            }
        }
示例#8
0
 public virtual void AddSemiRows(SemiRows semirows)
 {
     lock ((_semirows as ICollection).SyncRoot)
     {
         _semirows.Enqueue(semirows);
     }
     //Thread.Sleep(100);
     _newobjectsemaphone.Release();
 }
示例#9
0
 public override void Canceled()
 {
     base.Canceled();
     if (_semirows4matrix != null)
     {
         _semirows4matrix.Clear();
         _semirows4matrix = null;
     }
 }
 protected void HandleSummaryRow(SemiRows semirows)
 {
     if (!_currentreport.bShowSummary && semirows.Count > 0)
     {
         int summaryindex = semirows.Count - 1;
         if (semirows[summaryindex].SectionType == SectionType.ReportSummary)
         {
             semirows.RemoveAt(summaryindex);
         }
     }
 }
示例#11
0
        public virtual SemiRows GetABlock()
        {
            SemiRows semirows = null;

            if (_newobjectsemaphone.WaitOne(0, false))
            {
                lock ((_semirows as ICollection).SyncRoot)
                {
                    semirows = _semirows.Dequeue();
                }
            }
            return(semirows);
        }
示例#12
0
        public virtual SemiRows GetABlockWait()
        {
            SemiRows semirows = null;
            int      r        = WaitHandle.WaitAny(_getobjectwaithandles);

            System.Diagnostics.Trace.WriteLine("GetABlockWait........." + r.ToString());
            if (r == 0)
            {
                lock ((_semirows as ICollection).SyncRoot)
                {
                    semirows = _semirows.Dequeue();
                }
            }
            return(semirows);
        }
示例#13
0
 public override void AddSemiRows(SemiRows semirows)
 {
     if (!_really4matrix)
     {
         base.AddSemiRows(semirows);
         return;
     }
     if (semirows == null)
     {
         return;
     }
     foreach (SemiRow sr in semirows)
     {
         _semirows4matrix.Add(sr);
     }
 }
示例#14
0
 public void AddSemiRows(SemiRows semirows)
 {
     lock ((_semirows as ICollection).SyncRoot)
     {
         _semirows.Enqueue(semirows);
     }
     if (i > 1000)
     {
         Thread.Sleep(time);
     }
     while (_semirows.Count > 10)
     {
         System.Diagnostics.Trace.WriteLine("警告:semirows中已有semirow数量为" + _semirows.Count);
         Thread.Sleep(time);
     }
     i++;
     _newobjectsemaphore.Release();
 }
示例#15
0
        public override SemiRows GetABlock()
        {
            if (!_really4matrix)
            {
                return(base.GetABlock());
            }
            if (_pageindex == -1)
            {
                return(_semirows4matrix);
            }

            int      beginindex = _pageindex * _pagesize;
            SemiRows srs        = new SemiRows();
            int      endindex   = Math.Min(_semirows4matrix.Count, beginindex + _pagesize);

            for (int i = beginindex; i < endindex; i++)
            {
                srs.Add(_semirows4matrix[i]);
            }
            return(srs);
        }
示例#16
0
 public SemiRowsContainerPerhaps4Matrix(ReportEngine engine)
     : base(engine)
 {
     _semirows4matrix = new SemiRows();
 }
示例#17
0
 protected SemiRowsContainerPerhaps4Matrix()
 {
     _semirows4matrix = new SemiRows();
 }
示例#18
0
 protected override void _semirowscontainer_SemiRowsComing(SemiRows semirows)
 {
     _semirowscontainer.AddSemiRows(semirows);
     _detailbuilder.BuildRows();
 }
示例#19
0
        private void AppendSemiRows(Report report, SemiRows semirows, ShowStyle showstyle, System.Drawing.Graphics g)
        {
            if (semirows != null)
            {
                Sections sections    = report.Sections;
                Detail   detail      = sections[SectionType.Detail] as Detail;
                int      grouplevels = report.GroupLevels;
                foreach (SemiRow semirow in semirows)
                {
                    Section section  = null;
                    Section section1 = null;
                    switch (semirow.SectionType)
                    {
                    case SectionType.GroupHeader:
                        section = sections.GetGroupHeader(semirow.Level);
                        if ((!report.bShowDetail || detail.Cells.Count == 0) && semirow.Level == grouplevels)    //detail.Cells.Count == 0
                        {
                            ApplyDetailStyle(section, _minordetailcount, detail, (detail as IAlternativeStyle).bApplyAlternative);
                            _minordetailcount++;
                        }
                        else
                        {
                            _minordetailcount = 0;
                            //if (showstyle == ShowStyle.NoGroupHeader)
                            //    ApplyDetailStyle(section, 0, detail, false);
                        }
                        break;

                    case SectionType.GroupSummary:
                        section = sections.GetGroupSummary(semirow.Level);
                        if ((!report.bShowDetail || detail.Cells.Count == 0) && semirow.Level == grouplevels)
                        {
                            _minordetailcount++;
                            ApplyDetailStyle(section, _minordetailcount, detail, (detail as IAlternativeStyle).bApplyAlternative);
                            _minordetailcount++;
                        }
                        else
                        {
                            _minordetailcount = 0;
                            //if (showstyle == ShowStyle.NoGroupHeader)
                            //    ApplyDetailStyleToGroupLabel(section, detail);
                        }
                        break;

                    case SectionType.ReportSummary:
                        section = sections[SectionType.ReportSummary];
                        break;

                    default:
                        if (report.bShowDetail)
                        {
                            section = detail;
                            (section as IAlternativeStyle).bApplySecondStyle = (_minordetailcount % 2 == 1);
                        }
                        else
                        {
                            section = sections.GetGroupHeader(semirow.Level);
                            ApplyDetailStyle(section, _minordetailcount, detail, (detail as IAlternativeStyle).bApplyAlternative);
                            section1 = sections.GetGroupSummary(semirow.Level);
                            ApplyDetailStyle(section1, _minordetailcount, detail, (detail as IAlternativeStyle).bApplyAlternative);
                        }
                        _minordetailcount++;
                        break;
                    }
                    AppendFrom(section, semirow, showstyle, report.BaseID, g);
                    AppendFrom(section1, semirow, showstyle, report.BaseID, g);
                }
            }
        }
示例#20
0
        public void AppendFrom(Report report, SemiRows semirows)
        {
            ShowStyle ss = HandleNoGroupHeader(report, ShowStyle.NoGroupHeader);

            AppendSemiRows(report, semirows, ss, null);
        }