コード例 #1
0
        public static RelatedListBrowser[] GetChildBrowsers(ReportDataContext dataContext, object dataSource, string parentDataMember, string childDataMember)
        {
            if (childDataMember.Length <= parentDataMember.Length)
            {
                return(new RelatedListBrowser[0]);
            }

            var r = new List <RelatedListBrowser>();

            RelatedListBrowser relatedListBrowser;
            var i = parentDataMember.Length;

            while (true)
            {
                i = childDataMember.IndexOf('.', i + 1);
                if (i == -1)
                {
                    break;
                }
                relatedListBrowser = dataContext.GetDataBrowser(dataSource, childDataMember.Substring(0, i), false) as RelatedListBrowser;
                if (relatedListBrowser != null)
                {
                    r.Add(relatedListBrowser);
                }
            }

            relatedListBrowser = dataContext.GetDataBrowser(dataSource, childDataMember, false) as RelatedListBrowser;
            if (relatedListBrowser != null)
            {
                r.Add(relatedListBrowser);
            }

            return(r.ToArray());
        }
コード例 #2
0
        public static RelatedListBrowser[] GetChildBrowsers(ReportDataContext dataContext, object dataSource, string parentDataMember, string childDataMember)
        {
            if (string.IsNullOrEmpty(parentDataMember)) throw new ArgumentException("Parent data member must not be null or empty.", nameof(parentDataMember));
            if (childDataMember.Length <= parentDataMember.Length) return new RelatedListBrowser[0];

            var r = new List<RelatedListBrowser>();

            RelatedListBrowser relatedListBrowser;
            var i = parentDataMember.Length;
            while (true)
            {
                i = childDataMember.IndexOf('.', i + 1);
                if (i == -1) break;
                relatedListBrowser = dataContext.GetDataBrowser(dataSource, childDataMember.Substring(0, i), false) as RelatedListBrowser;
                if (relatedListBrowser != null) r.Add(relatedListBrowser);
            }

            relatedListBrowser = dataContext.GetDataBrowser(dataSource, childDataMember, false) as RelatedListBrowser;
            if (relatedListBrowser != null) r.Add(relatedListBrowser);

            return r.ToArray();
        }
コード例 #3
0
        public static RelatedListBrowser[] GetChildBrowsers(ReportDataContext dataContext, object dataSource, string parentDataMember, string childDataMember)
        {
            if (string.IsNullOrEmpty(parentDataMember))
            {
                throw new ArgumentException("Parent data member must not be null or empty.", nameof(parentDataMember));
            }
            if (childDataMember.Length <= parentDataMember.Length)
            {
                return(new RelatedListBrowser[0]);
            }

            var r = new List <RelatedListBrowser>();

            RelatedListBrowser relatedListBrowser;
            var i = parentDataMember.Length;

            while (true)
            {
                i = childDataMember.IndexOf('.', i + 1);
                if (i == -1)
                {
                    break;
                }
                relatedListBrowser = dataContext.GetDataBrowser(dataSource, childDataMember.Substring(0, i), false) as RelatedListBrowser;
                if (relatedListBrowser != null)
                {
                    r.Add(relatedListBrowser);
                }
            }

            relatedListBrowser = dataContext.GetDataBrowser(dataSource, childDataMember, false) as RelatedListBrowser;
            if (relatedListBrowser != null)
            {
                r.Add(relatedListBrowser);
            }

            return(r.ToArray());
        }
コード例 #4
0
        private DataGroupInfo?GetCurrentDataGroup(ReportDataContext dataContext, Band runningBand)
        {
            if (dataContext == null)
            {
                throw new ArgumentNullException(nameof(dataContext));
            }
            if (runningBand == null)
            {
                throw new ArgumentNullException(nameof(runningBand));
            }

            var closestMember = runningBand as XtraReportBase ?? runningBand.GetParentBoundReportBand();
            var browser       = (ListBrowser)dataContext.GetDataBrowser(closestMember.DataSource, closestMember.DataMember, true);

            if (browser == null)
            {
                return(null);
            }

            var groupBand = runningBand as GroupBand;

            if (groupBand != null)
            {
                var groupRowLevel = DataGroupingUtils.GetGroupRowLevel((SortedListController)browser.ListController, groupBand.Level);
                if (groupRowLevel != null)
                {
                    return(new DataGroupInfo(
                               closestMember.DataSource,
                               closestMember.DataMember,
                               browser,
                               browser.List,
                               DataGroupingUtils.GetGroupInfo(browser, groupRowLevel.Value, browser.Position)));
                }
                runningBand = closestMember;
            }

            var detailBand = runningBand as XtraReportBase;

            if (detailBand != null)
            {
                return(new DataGroupInfo(closestMember.DataSource, closestMember.DataMember, browser, browser.List, null));
            }

            throw new InvalidOperationException($"Running band '{runningBand.Name}' cannot be used for immediate mode grouping. Calculated field {Name} must choose a {nameof(GroupBand)} or a {nameof(DetailReportBand)}.");
        }