Работа с базами данных
Захватите в панели Toolbox элемент управления DataGridView и перетащите его на поверхность формы. После создания элемента управления выделите глиф его смарт-тега и используйте раскрывающийся список в верхней части списка задач для выбора источника данных, к которому вы будете привязываться (рис. 18.37).
После того как вы выберете источник данных, вы опять получите полнофункциональное приложение, имеющее двухсторонний доступ к базе данных. Весь код для заполнения сетки и для сохранения изменений в базу данных был написан для вас интегрированной средой разработки.
Мощь DataGridView состоит в его способности быстро привязаться к данным и отобразить их в табличном формате, а также в обеспечении хорошо настраиваемых возможностей редактирования. В качестве небольшого примера возможностей редактирования ячеек рассмотрим таблицу Employee. Когда вы автоматически сгенерировали элементы управления формы для редактирования таблицы Employee, то получили элемент DateTimePicker для данных дат и времени этой таблицы. В элементе DataGridView редактирование ячеек выполняется как простое текстовое редактирование: каждая ячейка содержит текст, и вы можете редактировать текст и сохранять его в базе данных. Но вы можете предоставить и более специализированные возможности редактирования. Вы можете использовать различные готовые элементы управления (такие как DataGridViewButtonColumn,…
Для других элементов управления (которые не имеют удобного доступа к привязке при помощи своего смарт-тега) вы можете использовать окно Data Sources. Перетащите источник данных из окна Data Sources на существующий элемент управления. Визуальный конструктор создаст новый источник для привязки, настроит его соответствующим образом, а затем сделает запись в коллекции DataBinding данного элемента управления. Если вы попытаетесь перетащить элемент данных на такой элемент управления, который ему не соответствует (например, перетаскивание символьного поля на флажок), то операция перетаскивания не будет разрешена.
Несмотря на то, что общие концепции сохраняются, привязка данных к Web-элементам управления несколько отличается от того, что происходит в мире форм Windows. Первое очевидное отличие состоит в том, что источники данных для Web-форм реализованы элементами управления источником данных в пространстве имен System. Web.ui. WebControls; для Web-приложений не существует концепции окна Data Sources. Поэтому вместо того, чтобы начинать с источника данных, вам придется начинать с элемента управления данными, а затем прикреплять этот элемент управления к источнику данных.
Существует пять основных элементов управления, с которыми вы будете работать в Web- приложении для обеспечения функциональности привязки данных:
□ GridView — дает табличное представление, аналогичное элементу управления DataGridView;
□ DetailsView— отображает единственную запись из источника данных; при помощи элемента управления DetailsView каждый столбец в источнике данных будет виден как строка в элементе управления;
□ FormView — работает так же, как и элемент управления DetailsView, за следующим исключением: в нем нет встроенного способа по умолчанию для отображения данных. Вместо него вам придется предоставить шаблон, который точно укажет элементу управления, как вы хотите визуализировать данные на Web-странице;
□ Repeater — просто визуализирует…
Сначала в открытом Web-проекте перетащите элемент управления GridView из панели Toolbox на пустую Web-страницу. Первое, что вы заметите, — это то, что меню смарт-тега GridView так же удобно, как и меню DataGridView. После того как вы перетащили элемент управления на поверхность Web-страницы, вы сразу же получаете запрос для выбора (либо создания и выбора) источника данных (рис. 18.41).
Выбор варианта <New data source...> приведет к появлению аналогичного мастера источника данных (см. рис. 18.28) для сбора информации по вашему источнику данных и добавления его в проект.
Поскольку в визуальном конструкторе имеется поддержка привязки данных, то теперь у вас есть полностью функциональное приложение…
Создание сетки было простым и вам даже не понадобилось кодировать доступ к данным. Однако здесь не хватает одной вещи: как обновить данные в базе данных? Имеющийся у вас GridView очень хорош для статического отчета, но что если вам понадобится редактировать данные внутри сетки (точно так же, как вы делали это в приложении Windows Forms)? Ответ здесь— набор свойств GridView: AutoGenerateEditButton и AutoGenerateDeleteButton. Когда вы устанавливаете эти свойства в значение True, то GridView автоматически добавит ссылки Edit и Delete. Ссылка Edit имеет готовый код визуализации, так что при ее нажатии данная конкретная строка сетки станет редактируемой. На рис. 18.44 обратите внимание,…
Как уже упоминалось, источники данных проявляются при помощи элементов управления источниками данных, которые размещаются на Web-форме. В примере GridView визуальный конструктор фактически добавляет для вас на форму элемент управления SqlDataSource (как следствие создания вами нового источника данных на основе базы данных). Но ничто не мешает вам добавить один или несколько элементов управления источниками данных непосредственно на Web-страницу. Просто перетащите элемент управления из панели инструментов Toolbox на поверхность формы. В табл. 18.2 перечислены имеющиеся элементы управления источниками данных.
После настройки источника данных вы можете перейти к любому способному работать с данными элементу управления и привязать его к источнику данных.
Большую часть данной главы мы посвятили "стандартному" процессу создания .NET- приложений, которые читают и пишут данные, находящиеся в базе данных. Несмотря на то, что Visual Studio и сами библиотеки ADO.NET делают многое для того, чтобы абстрагировать сложные элементы этого процесса, некоторые проблемы все же остаются.
Фактически существует одна общая проблема, с которой сталкиваются разработчики приложений для работы с данными: различие между объектно-ориентированной моделью программирования приложения (реализованной на языках C# или Visual Basic) и реляционной моделью программирования (реализованной в основном на SQL в базах данных или наборах данных).
В мире объектно-ориентированного программирования мы манипулируем объектами посредством их методов и свойств, и…
Как обсуждалось в главе 5, LINQ — это сокращение от Language Integrated Query (встроенный язык запросов). Это компонент .NET Framework 3.5, который добавляет объектам .NET способность выполнять запросы типа запросов SQL. Точнее говоря, он расширяет основные .NET-языки (Visual Basic и С#) и исполняющую среду таким образом, чтобы уничтожить
этот барьер между объектом и объектом базы данных. Языки Visual Basic и C# поддерживают новые операторы запросов, которые работают с объектами аналогично тому, как SQL работает с таблицами базы данных.
Например, вы можете запросить все объекты утвержденных счетов следующим образом:
var approved = from invoice in invoices
where (invoice.Approved) == true select…