Страница 1 из 1
Замещение значений
Добавлено: 04 июн 2010, 01:38
iOgre
День добрый - проблема такая.
Мне нужно, в каждом поле отчета, где выводится "-1" вместо этого выводить строку "неизвестно"
Cуществует ли способ сделать это, неважно в отчете или в коде, без переписывания запросов
и внесения изменений в каждый текстбокс отчета.
Что-то вроде - получили доступ через код к ячейке с текстом-взяли ее данные - проверили - при необходимости заменили
Спасибо
Замещение значений
Добавлено: 04 июн 2010, 06:26
Jan
Здравствуйте,
Можно использовать такое выражение:
Код: Выделить всё
{MyDataSource.Column == -1 ? "Неизвестно" : MyDataSource.Column.ToString()}
Спасибо.
Замещение значений
Добавлено: 04 июн 2010, 06:44
iOgre
Jan писал(а):Здравствуйте,
Можно использовать такое выражение:
Код: Выделить всё
{MyDataSource.Column == -1 ? "Неизвестно" : MyDataSource.Column.ToString()}
Спасибо.
а как сделать это через код приложения?
Column имеет тип StiDataColumn, и присвоить ему string невозможно;
DataSources объявлены в самом отчете.
Замещение значений
Добавлено: 04 июн 2010, 12:26
Jan
Здравствуйте,
Это невозможно сделать для колонок в источнике данных. В приведенном примере замена осуществляется в самом текстовом выражении. Как вариант можно сделать так. В коде отчета (закладка Код в дизайнере) создайте функцию, например:
Код: Выделить всё
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Data;
using Stimulsoft.Controls;
using Stimulsoft.Base.Drawing;
using Stimulsoft.Report;
using Stimulsoft.Report.ReportControls;
using Stimulsoft.Report.Components;
namespace Reports
{
public class SimpleList : Stimulsoft.Report.StiReport
{
public string Convert(int value)
{
if (!MyVariableAllow)return value.ToString();
if (value == -1)return "Неизвестно";
return value.ToString();
}
После этого эту функцию можно использовать в выражении:
а переменная MyVariableAllow будет являться условием, которое включает/выключает необходимое преобразование. Вам остается только установить значение этой переменной перед запуском отчета:
Код: Выделить всё
StiReport report = new StiReport();
report.Load("MyReport.mrt");
report.RegData(myDataSet);
report.Compile();
report["MyVariableAllow"] = true;
report.Show();
Спасибо.
Замещение значений
Добавлено: 04 июн 2010, 13:12
iOgre
Jan писал(а):Здравствуйте,
Можно использовать такое выражение:
Код: Выделить всё
{MyDataSource.Column == -1 ? "Неизвестно" : MyDataSource.Column.ToString()}
Спасибо.
А, я немного неверно вас понял.
Но такой блок кода придется использовать в каждой databound ячейке.
Вопрос - можно ли сделать что-то вроде
foreach(var textField in )
{
if(textField.Text="-1" textField.Text="-";
}
Замещение значений
Добавлено: 07 июн 2010, 06:57
Jan
Здравствуйте,
Нет. К сожалению, так не получится.
Спасибо.
Замещение значений
Добавлено: 07 июн 2010, 11:09
iOgre
Jan писал(а):Здравствуйте,
Нет. К сожалению, так не получится.
Спасибо.
Жаль, очень жаль.
Хотелось бы увидеть такой функционал