Возможна ли группировка в динамическом отчёте
Возможна ли группировка в динамическом отчёте
Здравствуйте,
В момент вызова события BeforePrintEvent, значение текстового поля еще не расчитано. Лучше использовать событие GetValue. Значение поля будет находится в e.Value.
Спасибо.
В момент вызова события BeforePrintEvent, значение текстового поля еще не расчитано. Лучше использовать событие GetValue. Значение поля будет находится в e.Value.
Спасибо.
Возможна ли группировка в динамическом отчёте
Jan, подскажи как это реализовать
Написал так, т.е. добавляю обработчик при создании
, но в методе Text_Conditions(), на точку останова реакции нет никакой
Написал так, т.е. добавляю обработчик при создании
Код: Выделить всё
double posic = 0;
for (int i = intCountGroup + 1; i < dt.Columns.Count; i+=2)
{
StiGroupHeaderBand groupHeaderBand = StiActivator.CreateObject(StiOptions.Designer.ComponentsTypes.Bands.GroupHeaderBand) as StiGroupHeaderBand;
groupHeaderBand.Name = "GroupHeader" + intNameText.ToString();
groupHeaderBand.CanShrink = true; //Может сжиматься, если пустой
groupHeaderBand.Height = 0.4;
groupHeaderBand.Condition.Value = "{data." + dt.Columns[i].ColumnName + "}";
page.Components.Add(groupHeaderBand);
// TextGroup - значение первого столбца на заголовок группировки
StiText TextGroup;
TextGroup = new Stimulsoft.Report.Components.StiText();
TextGroup.ClientRectangle = new Stimulsoft.Base.Drawing.RectangleD(0, 0, page.Width + 0.2, 0.4);//- posic
TextGroup.Name = "TextGroupHeader" + i.ToString();
TextGroup.Text.Value = "{data." + dt.Columns[i - 1].ColumnName + "}";
TextGroup.Border.Side = StiBorderSides.All;
TextGroup.Enabled = false; //Невидимый элемент
TextGroup.GetValue += new Stimulsoft.Report.Events.StiGetValueEventHandler(Text_Conditions);
groupHeaderBand.Components.Add(TextGroup);
intNameText++;
posic += douStep;
}
Возможна ли группировка в динамическом отчёте
Здравствуйте,
Этот код вызван после компиляции отчета?
Спасибо.
Этот код вызван после компиляции отчета?
Спасибо.
Возможна ли группировка в динамическом отчёте
Нет, после :feelgood:
Я понял, Jan, что необходимо присваивать обработчик после компиляции отчёта.
Я так и сделал, но в событие не попадаю :dumb:
Вот код:
Так попадает, но это BeforePrint событие:
Как мне верно сделать?
Спасибо.
Я понял, Jan, что необходимо присваивать обработчик после компиляции отчёта.
Я так и сделал, но в событие не попадаю :dumb:
Вот код:
Код: Выделить всё
report.Compile();
for (int i = 0; i < arlNameTextGroup.Count; i++)
{
StiText TextGroup1 = report.GetComponents()[arlNameTextGroup[i].ToString()] as StiText;
TextGroup1.GetValue += new Stimulsoft.Report.Events.StiGetValueEventHandler(Text_Conditions);
}
report.Show();
Код: Выделить всё
report.Compile();
for (int i = 0; i < arlNameTextGroup.Count; i++)
{
report.CompiledReport.GetComponents()[arlNameTextGroup[i].ToString()].BeforePrint += new EventHandler(Text_Conditions);
}
report.Show();
Спасибо.
Возможна ли группировка в динамическом отчёте
Здравствуйте,
Есть небольшая разница между первым и вторым примером кода:
report.GetComponents()
report.CompiledReport.GetComponents()
В данном случае правильным будет второй.
Спасибо.
Есть небольшая разница между первым и вторым примером кода:
report.GetComponents()
report.CompiledReport.GetComponents()
В данном случае правильным будет второй.
Спасибо.
Возможна ли группировка в динамическом отчёте
Спасибо, Jan - отладчик остановился в событии :biggrin:
Возможна ли группировка в динамическом отчёте
Jan, возник следующий вопрос, при:
Событие GetValue у компонента - непроисходит
Код: Выделить всё
TextGroup.Enabled = false; //Невидимый элемент
Возможна ли группировка в динамическом отчёте
Здравствуйте,
В данном случае поведение генаратора отчетов верное. Какая логика? Происходит построение компонента. Генерируется событие BeforePrint. Событие генерируется в независимости от состояния свойства Enabled, для того, чтобы можно было изменить свойство Enabled компонента. Если Enabled свойство после события BeforePrint равно true, то начинается процесс генерации нового компонента, в том числе с вызовом события GetValue (для новосозданного компонента). В конце построения вызвается событие AfterPrint. Это событие вызвается в любом случае, в независимости от состояния свойства Enabled.
Спасибо.
В данном случае поведение генаратора отчетов верное. Какая логика? Происходит построение компонента. Генерируется событие BeforePrint. Событие генерируется в независимости от состояния свойства Enabled, для того, чтобы можно было изменить свойство Enabled компонента. Если Enabled свойство после события BeforePrint равно true, то начинается процесс генерации нового компонента, в том числе с вызовом события GetValue (для новосозданного компонента). В конце построения вызвается событие AfterPrint. Это событие вызвается в любом случае, в независимости от состояния свойства Enabled.
Спасибо.
Возможна ли группировка в динамическом отчёте
Спасибо, Jan, получилось :biggrin:
Сделал так:
Сделал, теперь наименования заголовка и подвала группы не видны при пустом значении.
Сделал так:
Код: Выделить всё
//После компиляции (а это важно), присваиваем события текстовым компонентам группировкам
report.Compile();
for (int i = 0; i < arlNameTextHeaderGroup.Count; i++)
{
StiText TextGroupHeaderEvent = report.CompiledReport.GetComponents()[arlNameTextHeaderGroup[i].ToString()] as StiText;
TextGroupHeaderEvent.GetValue += new Stimulsoft.Report.Events.StiGetValueEventHandler(Text_Conditions_GroupHeaderBand);
}
private void Text_Conditions_GroupHeaderBand(object sender, Stimulsoft.Report.Events.StiGetValueEventArgs e)
{//Обработчик события отображения/неотображения заголовков названий группировки
if (e.Value != "".ToString().ToLower())
((StiComponent)(sender)).Enabled = true;
else
((StiComponent)(sender)).Enabled = false;
}
Возможна ли группировка в динамическом отчёте
А вот и следующий вопрос У меня на 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++;
}
}
}
- Вложения
-
- Summ.JPG (37.37 КБ) 6101 просмотр