Интерактивность: Как получить из формулы Object, а не String ?
severn
Екатеринбург
Я использую отчеты для вывода данных бизнес-объектов.
Т.е. запросы к базе формирует некий QueryBuilder,
а результат выводится в отчет.
Хочется сделать так, чтоб при нажатии на цифру в отчете
выводился новый отчет - показывающий детализацию этой цифры.
Для этого мне нужны данные о том, чему эта цифра соответствует.
Например, что это приход товара Бандура за период с 01.01.11 по 25.03.11
Тогда я могу потребовать от построителя запросов сформировать новый
отчет - с этими параметрами, но развернутый по документам.
Или по датам.
Эти данные я вношу в HyperLink соответствующего элемента.
И при клике на этом элементе - вызываю обработчик:
// Обработчик в скрипте отчета
// При клике на цифре - вызвать детализирующий отчет для этой цифры
private void OpenText_Click(object sender, EventArgs e)
{
// sender - это объект, который был кликнут.
// Чтобы получить значение гиперссылки, надо привести sender к типу ReportComponentBase.
object key = (sender as ReportComponentBase).Hyperlink.Value;
// qBuilder - построитель запросов, сформировавший данные этого отчета
var qBuilder = Report.GetColumnValue("Data.QBuilder") as StdAccountReport;
// Вызываем событие детализации отчета - сообщая,
// что именно нужно детализировать
qBuilder.OnDetalizationQuery(key);
}
Проблема в том, что Hyperlink.Value возвращает строку, а не Object.
А мне нужно передать объект, содержащий несколько параметров.
Что-то типа new{Good=..., Store = ... }
(new{Good=<Бандура>, Store = <Подсобка> })
Это легко сделать через Object - но как мне передать этот Object?
Может быть, можно сделать у ссылки возможность хранить объект ?
Или подскажете какую-нибудь другую функцию, как
получить результат Hyperlink.Expression в виде объекта, не превращая
его в строку ?
Т.е. запросы к базе формирует некий QueryBuilder,
а результат выводится в отчет.
Хочется сделать так, чтоб при нажатии на цифру в отчете
выводился новый отчет - показывающий детализацию этой цифры.
Для этого мне нужны данные о том, чему эта цифра соответствует.
Например, что это приход товара Бандура за период с 01.01.11 по 25.03.11
Тогда я могу потребовать от построителя запросов сформировать новый
отчет - с этими параметрами, но развернутый по документам.
Или по датам.
Эти данные я вношу в HyperLink соответствующего элемента.
И при клике на этом элементе - вызываю обработчик:
// Обработчик в скрипте отчета
// При клике на цифре - вызвать детализирующий отчет для этой цифры
private void OpenText_Click(object sender, EventArgs e)
{
// sender - это объект, который был кликнут.
// Чтобы получить значение гиперссылки, надо привести sender к типу ReportComponentBase.
object key = (sender as ReportComponentBase).Hyperlink.Value;
// qBuilder - построитель запросов, сформировавший данные этого отчета
var qBuilder = Report.GetColumnValue("Data.QBuilder") as StdAccountReport;
// Вызываем событие детализации отчета - сообщая,
// что именно нужно детализировать
qBuilder.OnDetalizationQuery(key);
}
Проблема в том, что Hyperlink.Value возвращает строку, а не Object.
А мне нужно передать объект, содержащий несколько параметров.
Что-то типа new{Good=..., Store = ... }
(new{Good=<Бандура>, Store = <Подсобка> })
Это легко сделать через Object - но как мне передать этот Object?
Может быть, можно сделать у ссылки возможность хранить объект ?
Или подскажете какую-нибудь другую функцию, как
получить результат Hyperlink.Expression в виде объекта, не превращая
его в строку ?