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

Передать параметры ячейки при нажатии мышкой

Добавлено: 28 июл 2015, 15:19
Ингвар
Есть отчет, содержащий набор строк бэнда "Данные". Нужно в окне просмотра, при щелчке мышки на ячейки из строки бэнда передать содержимое этой ячейки в код (в действие "Нажатие").
Как это можно сделать?
Возможно есть другой вариант решения подобной задачи - получить значения поля по которому щелкнул пользователь.

Re: Передать параметры ячейки при нажатии мышкой

Добавлено: 29 июл 2015, 17:57
HighAley
Здравствуйте.

Узнать значение вы можете в событии Click компонента с помощью следующего кода:

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

(sender as StiText).Text
Спасибо.

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 можно следующим кодом:

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

(sender as StiText).TagValue as string
По сути это строка, в которую вы можете записать всё, что захотите, а потом можно распарсить выражение.

Спасибо.

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 можно следующим кодом:

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

(sender as StiText).TagValue as string
Это если берется Tag текстового поля. Можно ли получить Tag целиком бэнда (чтобы можно было обрабатывать щелчок не только по конкретной ячейки, но и по всей строке)?

Re: Передать параметры ячейки при нажатии мышкой

Добавлено: 31 июл 2015, 10:44
HighAley
Здравствуйте.

В отрендеренном отчёте нету бэндов. Остаются только текстовые компоненты.
Сохраняйте необходимые значения в свойстве Tag текстбокса.

Спасибо.