Страница 1 из 1

Интерактивный отчет

Добавлено: 13 май 2011, 16:13
Edvard
Добрый день.

Возникла такая заявка от пользователя. Не пойму, как ее реализовать и вообще возможно ли это?

Имеется репорт который формируется на основе Dataset. Юзер, непосредственно в отчете, хочет помечать некоторые записи, посредством чекбокса или как-нибудь еще. После этого нажимается кнопка Ok или Close, по которой отчет будет закрыт. После закрытия или перед закрытием, я в программме должен получить информацию о том, что юзер пометил в отчете. Т.е. иметь возможность идентифицировать помеченые юзером записи в Dataset-е.

Может быть есть пример подобной функциональности?

Использую версию Stimulsoft Reports 2008.1.

Интерактивный отчет

Добавлено: 15 май 2011, 19:15
Ivan
Здравствуйте.

Вариант решения задачи:
- на датабэнде располагаете checkbox, у него устанавливаете свойство Editable=true.
- показываем вьювер как диалоговую форму с помощью метода report.Show(true); это надо для того, чтобы дождаться закрытия вьювера.
- во вьювере пользователь нажимает кнопку "Editor" и отмечает нужные чекбоксы.
- после закрытия вьювера сохраняем состояния редактируемых элементов командой report.SaveEditableFields();

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

            report.Show(true);
            report.SaveEditableFields("d:\\result_editable_fields.xml");
Спасибо.

Интерактивный отчет

Добавлено: 18 май 2011, 05:55
Edvard
Здравствуйте.

Попробовал сделать, так как Вы указали. Не получилось.
Чекбокс не отображается и не редактируется ни в режиме Preview, ни в режиме редактирования репорта.
В чем может быть причина?

Используется версию Stimulsoft Reports 2008.1.

Интерактивный отчет

Добавлено: 18 май 2011, 12:01
Jan
Здравствуйте,

> Чекбокс не отображается и не редактируется ни в режиме Preview, ни в режиме редактирования репорта.

Чтобы инициализировать состояние флажка можно воспользоваться свойством Checked. Напишите в этом свойстве {true}, это установит значение по умолчанию. Далее нужно установить свойство Editable этого компонента в true. В Preview отчета, чтобы инициализировать редактирование нужно нажать на инструмент Edit Tool и только после этого флажки будут изменяться. К сожалению, метод SaveEditableFields не доступен в релизе 2008.1, но можно использовать небольшой код для поиска компонентов флажков в отчете и чтения их состояния:

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

foreach (StiPage page in report.RenderedPages)
				{					
					Hashtable pos = new Hashtable();
					StiComponentsCollection comps = page.GetComponents();
					foreach (StiComponent comp in comps)
					{
						IStiEditable editable = comp as IStiEditable;
						if (editable != null && editable.Editable)
						{
}
}
Спасибо.