Страница 3 из 4

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 07:53
Master
А вот и следующий вопрос :) У меня на GroupFooter есть текстовые компоненты, которые подбивают сумму столбцов, как мне их скрывать в зависимости от видимости заголовка подвала?
Спасибо.
Код формирования подвала таков:

Код: Выделить всё

            string[] arSummColumn = pstrSummColumn.Split('|');
            for (int i = dt.Columns.Count - 1; i >= intCountGroup + 1; i -= 2)
            {
                //Create GroupHeaderBand - группировка по первому столбцу
                StiGroupFooterBand groupFooterBand = StiActivator.CreateObject(StiOptions.Designer.ComponentsTypes.Bands.GroupFooterBand) as StiGroupFooterBand;
                groupFooterBand.Name = "GroupFooter" + intNameText.ToString();
                groupFooterBand.CanShrink = true;   //Может сжиматься, если пустой
                groupFooterBand.Height = 0.4;
                page.Components.Add(groupFooterBand);

                StiText TextGroupFooter;
                TextGroupFooter = new Stimulsoft.Report.Components.StiText();
                TextGroupFooter.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(0, 0, page.Width + 0.2, 0.4);
                TextGroupFooter.Name = "TextGroupFooter" + intNameText.ToString();

                arlNameTextFooterGroup.Add(TextGroupFooter.Name);

                TextGroupFooter.Text.Value = STR_ITOG + "{data." + dt.Columns[i - 1].ColumnName + "}";
                TextGroupFooter.Border.Side = StiBorderSides.All;
                TextGroupFooter.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 204);

                groupFooterBand.Components.Add(TextGroupFooter);
                
                intNameText++;

                if (pstrSummColumn.Length > 0)//Если в модуль переданы столбцы по которым надо произвести сложение
                {
                    double posicSumm = 0;
                    for (int ii = 0; ii = arPosColumn.Length)//Проверка диапазона
                        {
                            MessageBox.Show("Переданные параметр, столбца по которому необходимо подбить сумму выходит за приемлемый диапазон.", "Неправильно передан параметр.", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }

                        posicSumm = arPosColumn[number - 1];
                        StiText TextGroupFooterSumm;
                        TextGroupFooterSumm = new Stimulsoft.Report.Components.StiText();
                        TextGroupFooterSumm.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(posicSumm, 0, columnWidth, 0.4);
                        TextGroupFooterSumm.Name = "TextGroupFooter" + intNameText.ToString();
                        TextGroupFooterSumm.Text.Value = "{Sum(data." + dt.Columns[number].ColumnName + ")}";
                        TextGroupFooterSumm.Border.Side = StiBorderSides.All;

                        groupFooterBand.Components.Add(TextGroupFooterSumm);
                        intNameText++;
                    }
                }
            }

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 08:09
Jan
Здравствуйте,

Не совсем понял структуру отчета, то что выделено красным цветом это текстовые компоненты которые лежат на GroupFooterBand?

Спасибо.

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 09:22
Master
Да, Jan.
Мне их надо отключить также как и текстовый компонент наименования FooterBand.
Спасибо.

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 09:37
Andrew
Здравствуйте,

Нам не совсем понятна Ваша задача. Пожалуйста, опишите свою задачу более подробно. Будем признательны и сможем быстрее разобраться во всем и помочь Вам.

Спасибо.

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 10:16
Master
У меня есть FooterBand - ы, которые добавляються в цикле, на каждом StiText я ложу StiText который отображает наименование итог по группе:

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 10:19
Master
Итоговые StiText, которые не содержат информации, я отключаю их видимость событием. Так же как я и отключал пустые заголовки групп.
Спасибо, Вы мне в этом помогли :biggrin:
Получаю я такой вид отчёта:

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 10:25
Master
Отключал так:

Код: Выделить всё

private const string STR_ITOG = "итог по ";
......
 //После компиляции (а это важно), присваиваем события текстовым компонентам группировкам
  report.Compile();
  for (int i = 0; i < arlNameTextFooterGroup.Count; i++)
  {
     StiText TextGroupFooterEvent = report.CompiledReport.GetComponents()[arlNameTextFooterGroup[i].ToString()] as StiText;
     TextGroupFooterEvent.GetValue += new Stimulsoft.Report.Events.StiGetValueEventHandler(Text_Conditions_GroupFooterBand);
   }
   report.Show();
..........
private void Text_Conditions_GroupFooterBand(object sender, Stimulsoft.Report.Events.StiGetValueEventArgs e)
        {//Обработчик события отображения/неотображения подвалов названий группировки
            if (e.Value != STR_ITOG.ToString().ToLower())
                ((StiComponent)(sender)).Enabled = true;
            else
                ((StiComponent)(sender)).Enabled = false;
        }

Возможна ли группировка в динамическом отчёте

Добавлено: 03 июн 2009, 10:27
Master
Теперь я подошёл к следующему шагу - мне надо отдновременно отключить StiText, которые содержат итоговые суммы в подвалах, которых содержание наименования подвала отключено:

Возможна ли группировка в динамическом отчёте

Добавлено: 04 июн 2009, 06:32
Jan
Здравствуйте,

Если я верно понял Вам нужно текстовые компоненты с одинаковым значением заменить одним текстовым компонентом с этим значением?

Спасибо.

Возможна ли группировка в динамическом отчёте

Добавлено: 04 июн 2009, 07:06
Master
Нет :)

После добавления группировки я имею: