1. Построение приложений с привязанными данными в Windows Forms

Загрузка наборов данных из файла

b если у вас есть

Класс DataSet Поддерживает два метода для сохранения в файле и загрузки из файла: WriteXml И ReadXml. Если у вас есть данные в наборе данных и вы хотите сохранить их на диске или в потоке, вы вызываете WriteXml. Кода вы хотите прочитать их обратно, вы вызываете ReadXml. Поскольку речь идет о файлах формата XML, вы могли бы создать документ XML, пригодный для чтения набором данных, некоторым другим способом. В действительности документ не обязательно должен поступать из файла; метод ReadXml Может принимать поток, который может быть представлен файлом, сетевым потоком или потоком в памяти. Например, вы могли бы получить XML-документ через Web-службу, прочитав его в набор данных, а затем отобразить его в элементе управления DataGridView. Есть еще метод GetXml, Который позволяет получить содержимое набора данных как XML-строку. Метод ReadXml Способен вывести из несложного файла XML соответствующую схему, а затем преобразовать этот XML в набор данных. Он будет рассматривать корневой элемент документа как контейнер для набора данных. Он будет затем рассматривать каждый элемент, содержащий другие элементы, в качестве строки таблицы, а каждый элемент, содержащий только текст, как столбец этой строки. Метод может также обрабатывать схемы, где элементы представляют строки таблицы, но значения столбцов закодированы не как дочерние элементы, а как атрибуты этого элемента. Например, простой XML в листинге Г.1 будет загружен в набор данных, который будет содержать таблицу заказчиков и таблицу заказов, и будет иметь ограничения внешнего ключа и отношения между двумя таблицами, представляющие их вложенную природу. Соответствующая реляционная схема показана на рис. Г.2.

Вы решили воспользоваться виртуальным режимом

вы можете либо предоставлять все

Когда вы решили воспользоваться виртуальным режимом, у вас есть две возможности. Вы можете либо предоставлять все значения для строки, обрабатывая события виртуального режима, либо совмещать столбцы сетки с привязанными к данным и с несвязанными столбцами. Столбцы, которые будут заполняться в виртуальном режиме, должны определяться, как было описано в разделе «Программное конструирование DataGridView». Если вы, кроме того, привязываете некоторые столбцы к данным, то строки будут заполняться посредством привязки и вам нужно будет обрабатывать только события, относящиеся к виртуальному режиму, для столбцов, не привязанных к данным. Если вы не производите привязку данных, вам нужно добавить к сетке столько строк, сколько вы собираетесь в ней представлять, чтобы сетка могла правильно масштабировать полосу прокрутки. Затем вам нужен какой-то способ получения значений, соответствующих столбцам виртуального режима, когда они потребуются для представления сетки. Это можно сделать, вычисляя значения динамически по мере необходимости, и это является одним из важнейших случаев применения виртуального режима. Можно было бы также использовать кэшированные данные на стороне клиента в форме коллекции объектов или набора данных, либо действительно проделывать полный цикл двустороннего обмена с сервером для получения требуемых данных. В последнем случае необходима разумная стратегия опережающей загрузки и кэширования, иначе приложение быстро увязнет в обмене данными между клиентом и сервером, когда пользователь будет прокручивать сетку. Если же отображаются данные вычисляемые, то действительно имеет смысл не торопиться с вычислением значений, пока они действительно не понадобятся для отображения.

Создание специального содержания с помощью несвязанных столбцов

могу вас успокоить что для

Теперь, когда вы понимаете, как программно создавать столбцы и строки и заполнять их значениями, у вас может возникнуть вопрос, неужели придется заниматься всем этим всякий раз, когда вам потребуется представить содержимое в ячейке, не привязанной к данным? Могу вас успокоить, что для большинства сценариев, где вы захотите представлять непривязанные данные, существуют более быстрые способы. Вам потребуется программно создать все столбцы сетки, но вы можете воспользоваться событиями, чтобы сделать процесс заполнения сетки несколько проще, особенно в случаях, когда вы совмещаете привязанные данные и несвязанные столбцы. Несвязанный столбец — это столбец, не привязанный к данным. Вы добавляете к сетке несвязанные столбцы программно, и заполняете их значениями либо программным путем, как показано в предыдущем разделе, либо используя события, что будет обсуждаться ниже. Вы все равно можете добавлять к сетке столбцы, автоматически привязываемые к столбцам или свойствам элементов в источнике данных. Это делается после создания столбца, путем установки его свойства DataPropertyName. Затем вы можете добавлять и несвязанные столбцы. Строки сетки будут созданы, когда вы установите свойство DataSource Сетки на источник данных, как это делалось в простом случае привязки, при этом сетка будет перебирать строки или объекты в источнике данных, создавая для каждой строки или объекта новую строку.

Наиболее распространенные параметры используемые для баз данных SQL Server

b существуют другие имена параметров

Наиболее распространенными параметрами, используемыми для баз данных SQL Server, являются параметры Server, Database, Trusted Con — Nection, User Id И Password. Существуют другие имена параметров, которые дают тот же результат, что и перечисленные , Так что вы можете сами решить, какие из них использовать для типичных сценариев соединения. Из этого примера вы можете видеть, что с SQL Express 2005 можно использовать параметр AttachDbFileName Для спецификации базы данных по файловому пути. Ключевое слово |DataDirectory | является специальной синтаксической конструкцией, которая предписывает объекту соединения искать файл в рабочем каталоге исполняющегося приложения. Строка соединения специфицирует также, что экземпляром сервера является экземпляр по умолчанию SQLEXPRESS, a Trusted_Connection=True Указывает интегрированную защиту, т. е. вы будете авторизованы в базе данных с использованием идентификации из учетной записи Windows, под которой запущено приложение. Вы можете также явным образом передать в строке соединения имя пользователя и пароль, если захотите воспользоваться авторизацией SQL Server. Обычно вам не потребуется в своих приложениях жестко кодировать стоки соединения, как это сделано в листинге Г. З. Лучше размещать их в вашем конфигурационном файле, причем как Visual Studio 2005, так и. NET 2.0 поддерживают новую развитую модель для размещения строк соединения и других специальных и пользовательских установок в файлах конфигурации, в то же время позволяя обращаться к ним программно, сильно типизированным образом. Эти возможности подробно описываются в главах 2 и 5.

Вам требуется поддерживать только одностороннюю привязку данных

как уже упоминалось компонент b

Если вам требуется поддерживать только одностороннюю привязку данных, для получения всех элементов данных достаточно будет интерфейса LEnumerable, И для отображения можно использовать данные, обнаруженные при последней привязке. Как уже упоминалось, компонент BindingSource Может проходить по объектам коллекции, реализующие только LEnumerable, Чтобы поместить эти объекты в свой внутренний список элементов, и В Этой точке можно в Windows Forms привязать данные к компоненту BindingSource, Поскольку он поддерживает интерфейс IList. Методы Add, Insert, Remove, RemoveAt И Clear Упрощают манипуляцию элементами в коллекции как упорядоченном списке переменной длины. Методы Contains И IndexOf В сочетании с индексатором обеспечивают прямой доступ к содержимому коллекции как для чтения данных для отображения, так и для модификации содержимого в заданной позиции списка. Свойства IsFixedSize И IsReadOnly Дают вам знать, можно ли модифицировать содержимое коллекции, и если да, то до какой степени. Поскольку другие элементы IList специально предназначены для поддержки модификации списка, вы редко встретитесь с коллекцией, которая была бы совершенно немодифицируема, и обычно по умолчанию устанавливается модифицируемость. Однако можно было бы найти и такие коллекции, которые поддерживают переключение в режим только для чтения или в режим фиксированного размера. Данные свойства позволяют проверить наличие такого режима перед попыткой модифицировать содержимое коллекции, которая привела бы к исключению в случае, если коллекция была помечена как допускающая только чтение или как имеющая фиксированный размер.