Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Программисту -> Троелсен Э. -> "С# и платформа .NET. Библиотека программиста" -> 261

С# и платформа .NET. Библиотека программиста - Троелсен Э.

Троелсен Э. С# и платформа .NET. Библиотека программиста — СПб.: Питер, 2004. — 796 c.
ISBN 5-318-00750-3
Скачать (прямая ссылка): cplatforma2004.pdf
Предыдущая << 1 .. 255 256 257 258 259 260 < 261 > 262 263 264 265 266 267 .. 320 >> Следующая

Наша следующая задача — программным образом произвести добавление необходимых столбцов в коллекцию DataCol ufflnCol 1 ecti on при помощи метода Add ( S, Нам нужно будет добавить четыре столбца: CarlD, Make, Color и PetName (тип данных для каждого столбца определяется при помощи свойства DataCol иmn Di -taType):
// Объявляем переменную DataColumn
DataColumn myDataColumn;
Il Создаем столбец CarlD и цобавляен его в таблицу
myDataColumn - new DataColumnO;
myDataColumn.DataType = Type.GetTypet"System.Int32");
myDataColumn.CaI umnName = "CarlD":
myDataColumn. Readonly = true:
myDataColumn.AllowDBNull - false:
myDataColumn.Umque - true:
I/ Настраиваем CarlD как столбец счетчика myDataColumn.AutoIncrement = true: myDataColumn.AutoIncrementSeed = 1000; myDataColumn.AutoIncrementStep = 10; inventoryTable.Columns.Add(myDa taCo1umn);
Создаеи столбец Make и добавляем его в таблицу myDataColumn = new DataColumnO: myDataColumn.DataType - Type.GetTyре("System.String"): myDataColumn. Col umnName - "Make"; і nventoryTable.Columns.Add(myDataColumn);
II Создаем столбец Color и добавляем его в таблицу
myDataColumn = new DataColumnO;
myDataColumn.Datatype = Type.GetType("System.String"):
myDataColumn. Col umnName = "Color";
і nventoryTable, Columns.Add(myDataColumn);
// Создаем и добавляем последний столбец - PetName
myDataColumn = new DataColumnO;
myDataColumn.DataType = Type.GetTypet"System.String"):
myDataColumn.ColumnName = "PetName":
myDataColumn.AllowQbHull = true:
і nventoryTable. Columns. Add(myDataColumn);
Перед тем как приступить к добавлению строк, нам еще потребуется указать первичный ключ для таблицы. Для этого положено использовать свойство DataTable. РИтагуКеу. Первичный ключ может включать в себя несколько столбцов (композитный первичный ключ), поэтому это свойство в качестве параметра принимает массив объектов DataColumn. В нашей таблице роль первичного ключа будет выполнять единственный столбец СагЮ, поэтому соответствующий код может выглядеть так:
// Определяем 8 качестве первичного ключа столбец CarlD DataColumn[] PK - new DataColumn[l]: PK[Q] = inventoryTable.Columns["CarID"]: InventoryTable.PrimaryKey - PK:
646 Глава 13 • Доступ к данным при помощи ADO.NET
Таблицу мы создали не просто так, а для того, чтобы помещать в нее данные. Будем считать, что у нас уже есть массив arTheCars (типа ArrayLi st) объектов Саг. Перенос из него данных об автомобилях в таблицу может выглядеть так:
// Последовательно создаем строки на основе данньк элементов массива. Car ID нсмно
// опускать, поскольку мы настроили автоматическое приращение начений для этого столбца
foreachCCar с in arTheCars) {
DataRow new Row;
newRow - InventoryTable.NewRowC): newRow["M.ake"] - c.make: newRow["Color"] - c.color; newRow["PetName"] - c.petName: і nventoryTable. Rows. Add (newRow):
J
Теперь наша задача — убедиться, что все прошло нормально. Чтобы не отвлекаться, вообразим, что у нас есть приложение Windows Forms, на главной форме которого размещен элемент управления DataGri d. Для того чтобы привязать DataTabl е к DataGri іL используется свойство DataGri d. DataSource. По выполнении всех необходимых действий мы должны получить что-то похожее на рис. 13.9.
Inventory
С*гЮ . Make I Color. PelName. H
1000 BMW Green Chucky
1010 Yugo Whto Tiny I
1020 ,..ЫееР. . Tan
1030 Dsiavan Phk Pain Ыкхк
1040 BMW Pea Soup Gre: Fred I
1050 BMW Black Buddha
Рис. 1&9. Отображаем содержимое при помощи элемента управления DataGrid
В нашем примере мы добавили строки, явно указывая имя каждого столбца. Однако то же самое можно сделать и по-другому: указывая вместо имени порядковый номер столбца в таблице. Код для создания строк таблицы при этом может
выглядеть так (результаты работы будут совершенно одинаковы):
f'o-eoih/Cir с arTheCars) {
// Указываем столбцы, используя их порядковый НОНер
DataRow new Row;
newRow " InventoryTable. NewRow О:
newRow[l] = c.make;
newRow[2] - c.col or:
newRow^ = c.petName;
1nventoryTa Ы e. Rows. Add(newRow):
Удаляем строки из таблицы
Если нам потребуется удалить из таблицы одну или несколько строк, мы можем сделать это несколькими способами. Первый способ — воспользоваться ме-
Создаем объект DataTable 647
годом DeleteO. При этом нам придется указать порядковый номер удаляемой строки.
Предположим, что в графическом интерфейсе нашего приложения произошли изменения: появилась кнопка Remove (рис. 13.10).

Make Dstabable
Inventory
(CeIO f Cobr }P*Httne
К It]QO BMW Green Chucky
1010 Yugo .WUe
MD30 Caravan Phk Pain Induce
¦ 1040 BMW Pea Soup GwjFnd
|J1050 1BMW Black Buddha
L.
Remove row
Рис. 13.10. Графическое приложение с возможностью удаления строк
Будем считать, что мы только что нажали кнопку Remove row # и строки номер 2 (CarID 1020) больше нет. Для выполнения этой нехитрой операции достаточно поместить в обработчик события Click для нашей кнопки следующий код:
// Удаляем строку из таблицы
protected void btnReroveRownick (object sender. SystemEventArgs e)
Предыдущая << 1 .. 255 256 257 258 259 260 < 261 > 262 263 264 265 266 267 .. 320 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100