Esempio n. 1
0
        public void RecalculateRowNumber(CustomReportRow item)
        {
            if (RecalculateNow)
            {
                return;
            }
            RecalculateNow = true;
            //все номера в таблице, которые больше этого N, изменяются как N+1
            var rows = CustomReportRows.Where(c => (c.idfsCustomReportType == item.idfsCustomReportType) && (c.intRowOrder >= item.intRowOrder) && (c.idfReportRows != item.idfReportRows)).ToList();

            rows.Sort(new CompareRows());
            for (var i = 0; i < rows.Count; i++)
            {
                rows[i].intRowOrder = item.intRowOrder + i + 1;
            }

            RecalculateNow = false;

            /* старый алгоритм
             *
             * Паша сказал переделать на нынешний 13 марта 2014 года в рамках исправления бага 9068
             *
             * //пересчет всех номеров строк вниз от этой строки (порядок строк жестко сортирован по возрастанию и не меняется пользователем)
             * var list = CustomReportRows.Where(c => c.idfsSummaryReportType == item.idfsSummaryReportType).ToList();
             * var index = list.IndexOf(item);
             * if (index < 0) return;
             * RecalculateNow = true;
             * var numRow = item.intRowOrder;
             * for (var i = index + 1; i < list.Count; i++)
             * {
             *  list[i].intRowOrder = numRow + (i - index);
             * }
             */
        }
Esempio n. 2
0
        public int GetNewRowNumber()
        {
            if (RecalculateNow)
            {
                return(0);
            }
            var list = CustomReportRows.Where(c => c.idfsCustomReportType == idfsSummaryReportType).ToList();
            var max  = 0;

            if (list.Count > 0)
            {
                max = list.Max(c => c.intRowOrder);
            }
            return(max + 1);
        }