Страница 1 из 1
Передать параметры ячейки при нажатии мышкой
Добавлено: 28 июл 2015, 15:19
Ингвар
Есть отчет, содержащий набор строк бэнда "Данные". Нужно в окне просмотра, при щелчке мышки на ячейки из строки бэнда передать содержимое этой ячейки в код (в действие "Нажатие").
Как это можно сделать?
Возможно есть другой вариант решения подобной задачи - получить значения поля по которому щелкнул пользователь.
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 29 июл 2015, 17:57
HighAley
Здравствуйте.
Узнать значение вы можете в событии Click компонента с помощью следующего кода:
Спасибо.
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 29 июл 2015, 18:23
Ингвар
Спасибо. А если ячейка находится на бэнде "Данные", можно ли получить значения соседних ячеек (чтобы передать не одно значения, а все значения строки данных)?
Может быть можно использовать функцию "Взаимодействие", но без открытия страницы детализации?
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 30 июл 2015, 09:24
HighAley
Здравствуйте.
Обычно для этих целей используется поле Tag у текстового компонента, куда можно записать всю необходимую информацию.
Спасибо.
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 30 июл 2015, 09:58
Ингвар
Можно ли через Tag передать несколько значений?
Нет ли примера работы с этим полем?
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 30 июл 2015, 10:24
HighAley
Здравствуйте.
Получить значение Tag можно следующим кодом:
По сути это строка, в которую вы можете записать всё, что захотите, а потом можно
распарсить выражение.
Спасибо.
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 30 июл 2015, 11:55
Леонид
Добрый день!
Для реализации вашей задачи можно сделать так. В коде отчёта в классе самого отчёта (чуть выше конструктора, например) пишет свой обработчик события (назовём его, например, CustomText_Click) компонента OnClick():
Код: Выделить всё
using System;
using System.Drawing;
...
namespace Reports
{
public class Report : Stimulsoft.Report.StiReport
{
// наш обработчик и код в нём
public void CustomText_Click(object sender, System.EventArgs e)
{
// получаем текущее значение компонента Text, по которому кликнули (т.е. значение колонки, на которой кликнули)
string text = (sender as StiText).Text;
MessageBox.Show(text); // просто выводим его
}
public Report() {
this.InitializeComponent();
}
....
Теперь просто подписываем все (или необходимые компоненты Text) на наше событие в событии отчёта BeginRender():
Код: Выделить всё
foreach (StiText text in DataBand1.Components)
text.Click += new System.EventHandler(this.CustomText_Click);
Рабочий пример в приложении (единственное, что я использовал данные из Oracle, так что подставьте свой провайдер данных).
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 30 июл 2015, 15:24
Ингвар
Спасибо.
Aleksey Andreyanov писал(а):Получить значение Tag можно следующим кодом:
Это если берется Tag текстового поля. Можно ли получить Tag целиком бэнда (чтобы можно было обрабатывать щелчок не только по конкретной ячейки, но и по всей строке)?
Re: Передать параметры ячейки при нажатии мышкой
Добавлено: 31 июл 2015, 10:44
HighAley
Здравствуйте.
В отрендеренном отчёте нету бэндов. Остаются только текстовые компоненты.
Сохраняйте необходимые значения в свойстве Tag текстбокса.
Спасибо.