public bool TryGetNewSortTarget(string scopeName, out AspNetCore.ReportingServices.ReportIntermediateFormat.ISortFilterScope target)
 {
     target = null;
     return(this.m_reportScopes.TryGetValue(scopeName, out target));
 }
示例#2
0
 public bool PopulateRuntimeSortFilterEventInfo(OnDemandProcessingContext odpContext, AspNetCore.ReportingServices.ReportIntermediateFormat.DataSet myDataSet)
 {
     if (odpContext.TopLevelContext.UserSortFilterInfo != null && odpContext.TopLevelContext.UserSortFilterInfo.OdpSortInfo != null && odpContext.TopLevelContext.OldSortFilterEventInfo != null)
     {
         if (-1 != this.m_dataSetGlobalID)
         {
             return(false);
         }
         this.m_runtimeSortFilterInfo = null;
         EventInformation.OdpSortEventInfo odpSortInfo = odpContext.TopLevelContext.UserSortFilterInfo.OdpSortInfo;
         for (int i = 0; i < odpSortInfo.Count; i++)
         {
             string uniqueNameAt = odpSortInfo.GetUniqueNameAt(i);
             AspNetCore.ReportingServices.ReportIntermediateFormat.SortFilterEventInfo sortFilterEventInfo = odpContext.TopLevelContext.OldSortFilterEventInfo[uniqueNameAt];
             if (sortFilterEventInfo != null && sortFilterEventInfo.EventSource.UserSort != null)
             {
                 int num = sortFilterEventInfo.EventSource.UserSort.SubReportDataSetGlobalId;
                 if (-1 == num)
                 {
                     num = sortFilterEventInfo.EventSource.UserSort.DataSet.GlobalID;
                 }
                 if (num == myDataSet.GlobalID)
                 {
                     if (this.m_runtimeSortFilterInfo == null)
                     {
                         this.m_runtimeSortFilterInfo = new List <IReference <RuntimeSortFilterEventInfo> >();
                     }
                     RuntimeSortFilterEventInfo runtimeSortFilterEventInfo = new RuntimeSortFilterEventInfo(sortFilterEventInfo.EventSource, uniqueNameAt, odpSortInfo.GetSortDirectionAt(i), sortFilterEventInfo.EventSourceScopeInfo, odpContext, (this.m_currentContainingScope == null) ? 1 : this.m_currentContainingScope.Value().Depth);
                     runtimeSortFilterEventInfo.SelfReference.UnPinValue();
                     this.m_runtimeSortFilterInfo.Add(runtimeSortFilterEventInfo.SelfReference);
                 }
             }
         }
         if (this.m_runtimeSortFilterInfo != null)
         {
             int count = this.m_runtimeSortFilterInfo.Count;
             for (int j = 0; j < count; j++)
             {
                 IReference <RuntimeSortFilterEventInfo> reference = this.m_runtimeSortFilterInfo[j];
                 using (reference.PinValue())
                 {
                     RuntimeSortFilterEventInfo runtimeSortFilterEventInfo2 = reference.Value();
                     IInScopeEventSource        eventSource = runtimeSortFilterEventInfo2.EventSource;
                     AspNetCore.ReportingServices.ReportIntermediateFormat.ISortFilterScope sortExpressionScope = eventSource.UserSort.SortExpressionScope;
                     if (sortExpressionScope != null)
                     {
                         sortExpressionScope.IsSortFilterExpressionScope = this.SetSortFilterInfo(sortExpressionScope.IsSortFilterExpressionScope, count, j);
                     }
                     AspNetCore.ReportingServices.ReportIntermediateFormat.ISortFilterScope sortTarget = eventSource.UserSort.SortTarget;
                     if (sortTarget != null)
                     {
                         sortTarget.IsSortFilterTarget = this.SetSortFilterInfo(sortTarget.IsSortFilterTarget, count, j);
                     }
                     if (eventSource.ContainingScopes != null && 0 < eventSource.ContainingScopes.Count)
                     {
                         int num2 = 0;
                         int num3 = 0;
                         for (int k = 0; k < eventSource.ContainingScopes.Count; k++)
                         {
                             AspNetCore.ReportingServices.ReportIntermediateFormat.Grouping grouping = eventSource.ContainingScopes[k];
                             if (grouping == null || !grouping.IsDetail)
                             {
                                 List <object> list = runtimeSortFilterEventInfo2.SortSourceScopeInfo[num2];
                                 if (grouping != null)
                                 {
                                     if (grouping.SortFilterScopeInfo == null)
                                     {
                                         grouping.SortFilterScopeInfo = new List <object> [count];
                                         for (int l = 0; l < count; l++)
                                         {
                                             grouping.SortFilterScopeInfo[l] = null;
                                         }
                                         grouping.SortFilterScopeIndex = new int[count];
                                         for (int m = 0; m < count; m++)
                                         {
                                             grouping.SortFilterScopeIndex[m] = -1;
                                         }
                                     }
                                     grouping.SortFilterScopeInfo[j]  = list;
                                     grouping.SortFilterScopeIndex[j] = num2;
                                 }
                                 else
                                 {
                                     List <AspNetCore.ReportingServices.ReportIntermediateFormat.SubReport> detailScopeSubReports = eventSource.UserSort.DetailScopeSubReports;
                                     AspNetCore.ReportingServices.ReportIntermediateFormat.ReportItem       reportItem            = (detailScopeSubReports == null || num3 >= detailScopeSubReports.Count) ? eventSource.Parent : detailScopeSubReports[num3++].Parent;
                                     while (reportItem != null && !reportItem.IsDataRegion)
                                     {
                                         reportItem = reportItem.Parent;
                                     }
                                     Global.Tracer.Assert(reportItem.IsDataRegion, "(parent.IsDataRegion)");
                                     AspNetCore.ReportingServices.ReportIntermediateFormat.DataRegion dataRegion = (AspNetCore.ReportingServices.ReportIntermediateFormat.DataRegion)reportItem;
                                     if (dataRegion.SortFilterSourceDetailScopeInfo == null)
                                     {
                                         dataRegion.SortFilterSourceDetailScopeInfo = new int[count];
                                         for (int n = 0; n < count; n++)
                                         {
                                             dataRegion.SortFilterSourceDetailScopeInfo[n] = -1;
                                         }
                                     }
                                     Global.Tracer.Assert(list != null && 1 == list.Count, "(null != scopeValues && 1 == scopeValues.Count)");
                                     dataRegion.SortFilterSourceDetailScopeInfo[j] = (int)list[0];
                                 }
                                 num2++;
                             }
                         }
                     }
                     AspNetCore.ReportingServices.ReportIntermediateFormat.GroupingList groupsInSortTarget = eventSource.UserSort.GroupsInSortTarget;
                     if (groupsInSortTarget != null)
                     {
                         for (int num5 = 0; num5 < groupsInSortTarget.Count; num5++)
                         {
                             groupsInSortTarget[num5].NeedScopeInfoForSortFilterExpression = this.SetSortFilterInfo(groupsInSortTarget[num5].NeedScopeInfoForSortFilterExpression, count, j);
                         }
                     }
                     List <int> peerSortFilters = eventSource.GetPeerSortFilters(false);
                     if (peerSortFilters != null && peerSortFilters.Count != 0)
                     {
                         if (runtimeSortFilterEventInfo2.PeerSortFilters == null)
                         {
                             runtimeSortFilterEventInfo2.PeerSortFilters = new Hashtable();
                         }
                         for (int num6 = 0; num6 < peerSortFilters.Count; num6++)
                         {
                             if (eventSource.ID != peerSortFilters[num6])
                             {
                                 runtimeSortFilterEventInfo2.PeerSortFilters.Add(peerSortFilters[num6], null);
                             }
                         }
                     }
                 }
             }
         }
         return(true);
     }
     return(false);
 }
 public void AddSortTarget(string scopeName, AspNetCore.ReportingServices.ReportIntermediateFormat.ISortFilterScope target)
 {
     Global.Tracer.Assert(!this.m_reportScopes.ContainsKey(scopeName), "(!m_reportScopes.ContainsKey(scopeName))");
     this.m_reportScopes.Add(scopeName, target);
 }