- •Visual Studio и sql Server 2005 - начало работы. Проекты.
- •Интеграция в sql Server
- •Хранимые процедуры
- •Пользовательские функции Скалярные функции
- •Табличные функции
- •Триггеры
- •Агрегирующие функции
- •Пользовательские типы данных
- •Программирование на стороне клиента
- •Настройка odbc
- •Программный доступ посредством odbc
- •Классификация api-функций odbc
- •Пример программирования на основе odbc
- •Технология ado.Net Общие сведения
- •Соединение с sql Server
- •Представление базы данных на стороне клиента
- •Средства отображения таблиц
- •Взаимодействие с sql Server и получение результатов Запуск команд на стороне сервера
- •Использование адаптера
- •Контрольные вопросы:
- •Самостоятельная работа:
- •Список литературы:
Средства отображения таблиц
До сих пор для отображения информации, полученной из таблиц, мы использовали консольное окно. Но это были лишь примеры, демонстрирующие возможности работы с таблицами. Реальное приложение должно иметь визуальные, удобные для пользователя средства отображения табличной информации. Таким средством является класс DataGridView, расположенный в пространстве имен System.windows.Forms. Этот инструмент позволяет не только отображать табличные структуры в удобном для пользователя виде. С помощью DataGridView вы можете редактировать представленное содержимое (т. е. объекта DataTable, см. предыдущий раздел), и это редактирование будет тут же отражаться на содержимом самой таблицы, представлением которой является этот элемент окна. Но на этом возможности не заканчиваются. Вы можете менять содержимое представляемой таблицы, и эти изменения будут отображаться на экране.
Рассмотрим пример, который демонстрирует принципы использования объектов класса DataGridView.
Для начала создайте приложение типа Visual С# | Windows по шаблону Windows Application. При этом автоматически создается главная форма приложения. Для того чтобы использовать элемент DataGridView, следует обратиться к панели Toolbox и перетащить оттуда элемент на вашу форму. Затем визуальными средствами можно указать место расположения элемента и его размер.
Чтобы элемент DataGridView связать с конкретной таблицей, она должна быть предварительно создана. Заполнить же ее можно или непосредственно программным путем, как это мы делали в предыдущем разделе, или же получив данные с SQL Server, что нам еще предстоит сделать.
Для создания таблицы и связывания ее с элементом DataGridView выбирается событие Load (событие для объекта класса Form пространства имен System.windows.Forms), процедуру обработки которого можно легко создать, обратившись к окну свойств главного окна (формы). Событие происходит во время создания формы, точнее, перед тем как окно будет отображено на экране. Содержимое процедуры обработки события можно увидеть в листинге 5.6. Создание и заполнение таблицы для нас — вполне знакомые операции. Интересна строка
this.dataGridViewl.DataSource = t1;
Этой строки вполне достаточно, чтобы связать наш элемент отображения с реальной таблицей. После этого можно просматривать и редактировать эту таблицу. Объект класса DataGridView обладает свойствами Rows и Columns, при помощи которых, в частности, можно добавлять и удалять строки и столбцы таблицы..
Листинг 5.6
private void Form1_Load(object sender, EventArgs e)
{
DataColumn dt;
this.t1 = new DataTable("names");
// столбец id - первичный ключ
dt = new DataColumn();
dt.DataType = System.Type.GetType("System.Int32");
dt.ColumnName = "id";
dt.AutoIncrement = true;
dt.Unique = true;
dt.AllowDBNull = false;
t1.Columns.Add(dt);
// столбец name
dt = new DataColumn();
dt.DataType = System.Type.GetType("System.String");
dt.ColumnName = "name";
dt.AllowDBNull = false;
dt.DefaultValue = " ";
t1.Columns.Add(dt);
// заполняем таблицу
DataRow row1 = t1.NewRow();
row1["name"] = "Green";
t1.Rows.Add(row1);
row1 = t1.NewRow();
row1["name"] = "White";
t1.Rows.Add(row1);
row1 = t1.NewRow();
row1["name"] = "Black";
t1.Rows.Add(row1);
// для объекта Grid определяем источник
this.dataGridView1.DataSource = t1;
this.dataGridView1.Columns.Add("col1", "column1");
this.dataGridView1.Columns["col1"].ReadOnly = true;
}