Создание объектов DataSet, DataTable, DataColumn и DataRow.

Создадим свойство, которое будет определять имя выводимой таблицы и переменную, которая будет хранить в себе путь до файла с данными, для этого проделаем следующие действия.

  1. Создание свойства. В класс, справочника №1 (файла Spr1.cs), добавим следующий код.
class TSpr1 : IDocuments { // Переменные определяющие возможность // добавления изменения и удаления bool _bAdd, _bChange, _bDell; string _sTableName; // переменная содержит имя выводимой таблицы. // Свойстово возвращающее имя таблицы public string sTableName { get { return _sTableName; } }
  1. Подключение свойства в интерфейс «IDocuments». В класс интерфейса (файл IDocuments.cs), добавим следующий код.
public interface IDocuments { // Свойства документа bool bAdd {get ; } bool bChange{ get ; } bool bDell{ get;} // Свойство возвращающее имя таблицы string sTableName {get;} // СТРОКА КОТОРУЮ СЛЕДУЕТ ДОБАВИТЬ !!! }
  1. Создание переменной определяющей путь к файлу. Для этого в классе TSpr1 добавим описание переменной.
class TSpr1 : IDocuments { // Переменные определяющие возможность // добавления изменения и удаления bool _bAdd, _bChange, _bDell; string _sTableName; // переменная содержит имя выводимой таблицы. // Свойстово возвращающее имя таблицы public string sTableName { get { return _sTableName; } }   string sDataPath; //!!! переменная определяющая путь к файлу с данными
  1. Определим значения созданных переменных. Для этого в конструкторе класса TSpr1 пропишем следующий код.
public TSpr1() { _bAdd = true; _bChange = true; _bDell = true; sDataPath = @"<Путь да папки с данными>\Data\Spr1.dat"; _sTableName = "Spr1"; }

Перед созданием объектов DataSet, DataTable, DataColumn необходимо вкраце определить, что они означают (более подробное определение и описание можно получить из MSDN).

DataSet – Хранилище таблиц, обеспечивающее доступ к таблицам, а также позволяющее создавать связи между ними.

DataTable – объект таблица, обеспечивает создание колонок и хранение данных.

DataColumn – объект колонка, имеющий свои определенные свойства для работы с данными.

DataRow – объект запись, принадлежит определенной колонке и обеспечивает доступ к данными в этой колонке.

Для работы с данными объектами необходимо подключить пространство имен «System.Data», для этого необходимо в начале файла «Spr1.cs» прописать следующую строку:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; // пространство имен для работы с данными.

Далее в классе TSpr1 опишем объекты, которые будем создавать, для этого пропишем в классе следующий код.

DataSet _DataSet; DataTable _Table; DataColumn _Column;

Теперь преступим к созданию хранилища данных для нашего документа. Мы определили, что справочник №1 состоит из 4х колонок имеющих следующий вид.



Название столбца Значение
id Уникальный ключ строки
Name Наименование
Width Ширина
Height Высота

Для создания таблицы сделаем отдельную функцию в класс TSpr1, для этого пропишем следующий код.

protected void InitDataTable() { //Создание хранилища данных _DataSet = new DataSet(); // Создание таблицы. _Table = new DataTable(sTableName); // Создание 1ой колонки id _Column = new DataColumn(); // Создание объекта. _Column.DataType = System.Type.GetType("System.Int32"); // параметр определяет тип _Column.ColumnName = "id"; // параметр определяет имя _Column.AutoIncrement = true; // параметр определяет автоматическое прерощение _Column.Caption = "№ п.п."; // параметр определяет заголовок столбца _Column.ReadOnly = true; // параметр определяет возможность изменения _Column.Unique = true; // параметр определяет уникальность   // Добавление колоноки в таблицу. _Table.Columns.Add(_Column);   // Создание 2ой колонки Name _Column = new DataColumn(); _Column.DataType = System.Type.GetType("System.String"); _Column.ColumnName = "Name"; _Column.AutoIncrement = false; _Column.Caption = "Наименование"; _Column.ReadOnly = false; _Column.Unique = false;   // Добавление колоноки в таблицу. _Table.Columns.Add(_Column);   // Создание 3ей колонки Width _Column = new DataColumn(); _Column.DataType = System.Type.GetType("System.Int32"); _Column.ColumnName = "Width"; _Column.AutoIncrement = false; _Column.Caption = "Ширина"; _Column.ReadOnly = false; _Column.Unique = false;   // Добавление колоноки в таблицу. _Table.Columns.Add(_Column);   // Создание 4ой колонки Height _Column = new DataColumn(); _Column.DataType = System.Type.GetType("System.Int32"); _Column.ColumnName = "Height"; _Column.AutoIncrement = false; _Column.Caption = "Высота"; _Column.ReadOnly = false; _Column.Unique = false;   // Добавление колоноки в таблицу. _Table.Columns.Add(_Column);   // Добавление таблицы в хранилище _DataSet.Tables.Add(_Table); }

Вызовем данную функцию в момент создания объекта TSpr1, для этого в конструктора класса добавим следующий код.

public TSpr1() { _bAdd = true; _bChange = true; _bDell = true; sDataPath = @"<Путь да папки с данными>\Data\Spr1.dat"; _sTableName = "Spr1"; InitDataTable(); // Вызов создания таблицы. }


Теперь необходимо заполнить нашу таблицу данными из файла, для этого необходимо считать данные из файла построчно, разобрать строку относительно разделителей, и вписать соответствующие данные в нужные колонки. Для этого сделаем следующую функцию в классе TSpr1.

public DataSet RefreshData() { DataRow _Row; _Table.Rows.Clear(); using (StreamReader _reader = new StreamReader(sDataPath)) { string _sTempString = string.Empty; while (_reader.Peek() > -1) { _sTempString = _reader.ReadLine(); String[] _sTempData = _sTempString.Split(new char[] { '^' });   _Row = _Table.NewRow(); _Row["id"] = Convert.ToInt32(_sTempData[0]); _Row["Name"] = _sTempData[1]; _Row["Width"] = Convert.ToInt32(_sTempData[2]); _Row["Height"] = Convert.ToInt32(_sTempData[3]);   _Table.Rows.Add(_Row); } } return _DataSet; }

Данная функция будет возвращать объект хранилища, который мы будем использовать для вывода информации на экран.

Наши рекомендации