Ejemplo n.º 1
0
        internal override void SetupContext(IInstancePath rifObject, IReportScopeInstance romInstance, int moveNextInstanceIndex)
        {
            bool flag             = false;
            bool needDeepCopyPath = false;

            if (romInstance == null)
            {
                flag             = true;
                m_lastRIFObject  = rifObject;
                needDeepCopyPath = true;
            }
            else if (romInstance.IsNewContext || m_lastROMInstance == null || m_lastRIFObject == null || 0 <= moveNextInstanceIndex)
            {
                flag = true;
                romInstance.IsNewContext = false;
                m_lastROMInstance        = romInstance;
                m_lastRIFObject          = rifObject;
                needDeepCopyPath         = true;
            }
            else if (m_lastROMInstance.Equals(romInstance))
            {
                if (!m_lastRIFObject.Equals(rifObject) && (m_lastRIFObject.InstancePathItem.Type == InstancePathItemType.SubReport || rifObject.InstancePathItem.Type == InstancePathItemType.SubReport))
                {
                    flag = true;
                }
                m_lastRIFObject = rifObject;
            }
            else if (m_lastRIFObject.Equals(rifObject))
            {
                m_lastROMInstance = romInstance;
            }
            else if (InstancePathItem.IsSamePath(m_lastInstancePath, rifObject.InstancePath))
            {
                m_lastROMInstance = romInstance;
                m_lastRIFObject   = rifObject;
            }
            else
            {
                flag = true;
                m_lastROMInstance = romInstance;
                m_lastRIFObject   = rifObject;
                needDeepCopyPath  = true;
            }
            if (flag)
            {
                SetupObjectModels(OnDemandMode.FullSetup, needDeepCopyPath, moveNextInstanceIndex, null);
                m_odpContext.ReportRuntime.ContextUpdated = true;
            }
        }