Страница 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();
        }
После этого эту функцию можно использовать в выражении:

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

{Convert(MyDataSource.Column)}
а переменная 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 писал(а):Здравствуйте,

Нет. К сожалению, так не получится.

Спасибо.
Жаль, очень жаль.
Хотелось бы увидеть такой функционал