Читать «ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание» онлайн - страница 587
Эндрю Троелсен
Работа с DataRow немного отличается от работы с DataColumn, поскольку вы не можете создать напрямую экземпляр этого типа, а получаете ссылку от данного DataTable. Предположим, например, что нам нужно вставить две строки в таблицу Inventory. Метод DataTable.NewRow() позволяет добавить очередную строку в таблицу, а затем вы можете добавить в каждый столбец новые данные с помощью индексатора типа, как показано ниже.
static void Main(string[] args) {
…
// Добавление строк в таблицу Inventory.
DataRow carRow = inventoryTable.NewRow();
carRow["Make"] = "BMW";
carRow["Colar"] = "черный";
сarRow["PetName"] = "Hamlet";
inventoryTable.Rows.Add(carRow);
carRow = inventoryTable.NewRow();
carRow["Make"] = "Saab";
carRow["Color"] = "красный";
carRow["PetName"] = "Sea Breeze";
inventoryTable.Rows.Add(carRow);
}
Обратите внимание на то, что класс DataRow определяет индексатор, который может использоваться для получения доступа к данному объекту DataColumn как по числовому индексу позиции, так и по имени столбца. В результате выполнения указанных строк программного кода вы получите один объект DataTable, содержащий два столбца.
Свойство DataRow.RowState
Свойство RowState оказывается полезным тогда, когда необходимо программно идентифицировать набор всех строк в таблице, которая, например, была изменена, только что создана и т.д. Это свойство может принимать любое значение из перечня DataRowState. Описания этих значений предлагаются в табл. 22.13.
Таблица 22.13. Значения перечня DataRowState
Значение | Описание |
---|---|
Added | Строка была добавлена в DataRowCollection, но метод AcceptChanges() не вызывался |
Deleted | Строка была удалена с помощью метода Delete() объекта DataRow |
Detached | Строка была создана, но не является частью коллекции DataRowСollection. Объект DataRow находится в этом состоянии после своего создания до того, как будет добавлен к коллекции (или же после удаления этого объекта из коллекции) |
Modified | Строка была изменена, но метод AcceptChanges() не вызывался |
Unchanged | Строка не изменилась со времени последнего вызова AcceptChanges() |