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

Сохранение информации в xml файл

Добавлено: 13 май 2010, 08:53
Наталья
При запуске на формирование отчета запускает форма, на которой предложено в поля типа TextBoxControl ввести некоторый текст. После чего нажимается кнопка Просмотр и отчет строится. Возможно ли как-то сохранить эту введенную информацию, например, в xml файле? Чтобы при следующем запуске этого же отчета из xml файла подгружались ранее сохраненные данные.
Спасибо.

Сохранение информации в xml файл

Добавлено: 13 май 2010, 13:13
Леонид
Какое отношение сохранение введённых данных в компонентах имеет к отчётной системе?!

Абсолютно рабочий пример я набросал Вам, скачайте его и посмотрите.
Если хотите сохранять введённые значения, из полей формы именно отчёта можно использовать, например такой способ:

В форме отчёта на событие LoadForm создаёте следующий код:

// create table
DataTable dtSettings = new DataTable("Settings");
SettingsTable = dtSettings; // save datatable in form tag (to use it in other events)

// create columns
DataColumn col1 = new DataColumn("text_box1");
DataColumn col2 = new DataColumn("text_box2");
DataColumn col3 = new DataColumn("text_box3");

// add columns to datatable
dtSettings.Columns.AddRange(new DataColumn[] { col1, col2, col3 });

// create a row
DataRow rowSettings = dtSettings.NewRow();
dtSettings.Rows.Add(rowSettings); // add the row to the table

// define file name
const string fileName = @"c:\temp\settings.xml";
FileName = fileName; // save file name to variable

if (System.IO.File.Exists(fileName)) // check for file existance
{
dtSettings.Rows.Clear(); // drop rows data
dtSettings.ReadXml(fileName); // read data from xml file
}

if (dtSettings.Rows.Count == 1)
{
DataRow row = dtSettings.Rows[0]; // get row

// fill up the controls with data
TextBox1.Text = row["text_box1"].ToString();
TextBox2.Text = row["text_box2"].ToString();
TextBox3.Text = row["text_box3"].ToString();
}


А на событие Click Вашей кнопки "Просмотр" пишете следующий код:

// get table reference
DataTable dtSettings = (DataTable)SettingsTable;

if (dtSettings.Rows.Count == 1)
{
DataRow row = dtSettings.Rows[0]; // get row

// set row data
row["text_box1"] = TextBox1.Text;
row["text_box2"] = TextBox1.Text;
row["text_box3"] = TextBox1.Text;

// save settings to file
dtSettings.WriteXml(FileName);
}


Промежуточная переменная SettingsTable типа object используется для хранения ссылки на созданный в событии LoadForm объекта DataTable, чтобы, потом использовать эту таблицу в других событиях (в данном случае в событии Click кнопки).
Переменную FileName используем для хранения информации о пути к файлу настроек.

Сохранение информации в xml файл

Добавлено: 14 май 2010, 09:40
Наталья
Спасибо за помощь.
Не могу открыть присланный файл, может быть, различия версий StimulSoft, ошибка
"Value cannot be null.
Parameter name: nullableType"

Сохранение информации в xml файл

Добавлено: 14 май 2010, 10:39
Леонид
Странно, ну может и версия.

В любом случае, проверить можете так. Создайте пустой отчёт. Создайте форму в отчёте. Бросьте на неё 3 TextBox'а с именами TextBox1, TextBox2 и TextBox3 для простоты. Ниже этих трёх элементов создайте кнопку.

В событие FormLoad впишите код (см. предыдущий пост):

// create table
DataTable dtSettings = new DataTable("Settings");
SettingsTable = dtSettings; // save datatable in form tag (to use it in other events)

// create columns
DataColumn col1 = new DataColumn("text_box1");
..................................................................
..................................................................
..................................................................
TextBox2.Text = row["text_box2"].ToString();
TextBox3.Text = row["text_box3"].ToString();
}


В событие Click кнопки впишите код (см. предыдущий пост):

// get table reference
DataTable dtSettings = (DataTable)SettingsTable;
..................................................................

А также создайте две переменные:

1) SettingsTable, тип object, её можно не инициализировать, т.к. она инициализируется в событии FormLoad.
2) FileName, тип string, установите значение какого-нибудь пути, например, "c:\\temp\settings.xml".

Должно работать, попробуйте.

Сохранение информации в xml файл

Добавлено: 17 май 2010, 04:43
Наталья
Да, работает.
Спасибо :biggrin: