Передать параметры ячейки при нажатии мышкой
Передать параметры ячейки при нажатии мышкой
Есть отчет, содержащий набор строк бэнда "Данные". Нужно в окне просмотра, при щелчке мышки на ячейки из строки бэнда передать содержимое этой ячейки в код (в действие "Нажатие").
Как это можно сделать?
Возможно есть другой вариант решения подобной задачи - получить значения поля по которому щелкнул пользователь.
Как это можно сделать?
Возможно есть другой вариант решения подобной задачи - получить значения поля по которому щелкнул пользователь.
Re: Передать параметры ячейки при нажатии мышкой
Здравствуйте.
Узнать значение вы можете в событии Click компонента с помощью следующего кода:
Спасибо.
Узнать значение вы можете в событии Click компонента с помощью следующего кода:
Код: Выделить всё
(sender as StiText).Text
Re: Передать параметры ячейки при нажатии мышкой
Спасибо. А если ячейка находится на бэнде "Данные", можно ли получить значения соседних ячеек (чтобы передать не одно значения, а все значения строки данных)?
Может быть можно использовать функцию "Взаимодействие", но без открытия страницы детализации?
Может быть можно использовать функцию "Взаимодействие", но без открытия страницы детализации?
Re: Передать параметры ячейки при нажатии мышкой
Здравствуйте.
Обычно для этих целей используется поле Tag у текстового компонента, куда можно записать всю необходимую информацию.
Спасибо.
Обычно для этих целей используется поле Tag у текстового компонента, куда можно записать всю необходимую информацию.
Спасибо.
Re: Передать параметры ячейки при нажатии мышкой
Можно ли через Tag передать несколько значений?
Нет ли примера работы с этим полем?
Нет ли примера работы с этим полем?
Re: Передать параметры ячейки при нажатии мышкой
Здравствуйте.
Получить значение Tag можно следующим кодом:
По сути это строка, в которую вы можете записать всё, что захотите, а потом можно распарсить выражение.
Спасибо.
Получить значение Tag можно следующим кодом:
Код: Выделить всё
(sender as StiText).TagValue as string
Спасибо.
Re: Передать параметры ячейки при нажатии мышкой
Добрый день!
Для реализации вашей задачи можно сделать так. В коде отчёта в классе самого отчёта (чуть выше конструктора, например) пишет свой обработчик события (назовём его, например, CustomText_Click) компонента OnClick():
Теперь просто подписываем все (или необходимые компоненты Text) на наше событие в событии отчёта BeginRender():
Рабочий пример в приложении (единственное, что я использовал данные из Oracle, так что подставьте свой провайдер данных).
Для реализации вашей задачи можно сделать так. В коде отчёта в классе самого отчёта (чуть выше конструктора, например) пишет свой обработчик события (назовём его, например, 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();
}
....
Код: Выделить всё
foreach (StiText text in DataBand1.Components)
text.Click += new System.EventHandler(this.CustomText_Click);
- Вложения
-
- Report.mrt
- (9.13 КБ) 373 скачивания
Re: Передать параметры ячейки при нажатии мышкой
Спасибо.
Это если берется Tag текстового поля. Можно ли получить Tag целиком бэнда (чтобы можно было обрабатывать щелчок не только по конкретной ячейки, но и по всей строке)?Aleksey Andreyanov писал(а):Получить значение Tag можно следующим кодом:Код: Выделить всё
(sender as StiText).TagValue as string
Re: Передать параметры ячейки при нажатии мышкой
Здравствуйте.
В отрендеренном отчёте нету бэндов. Остаются только текстовые компоненты.
Сохраняйте необходимые значения в свойстве Tag текстбокса.
Спасибо.
В отрендеренном отчёте нету бэндов. Остаются только текстовые компоненты.
Сохраняйте необходимые значения в свойстве Tag текстбокса.
Спасибо.