Назад
Создание прибыльного бизнеспроекта на базе сайта

SEO + ASP.NET 4.0 + БИЗНЕСМОДЕЛЬ = ПРИБЫЛЬНЫЙ САЙТ

Инструмент быстрого построения прибыльного онлайн бизнеса своими силами без капиталовложений за 4 месяца все подробности на SEO + ASP.NET 4.0.

Подписка на рассылку

МАГИЯ C#!

Создание вебсайта с формой автоматического приема онлайн платежей по WebMoney!
Ваше имя
Ваш e-mail
Уроки по ASP.NET c# ADO.NET
     

18 видеоуроков
более 5 часов
по созданию сайта,
выполняющего
продажи ваших продуктов (физических/электронных) на полном автомате с личным оповещением на e-mail, а также ...
DVD-курс по C#, .NET

3 часть. Введение в ASP.NET. WebServices Профессиональная подготовка разработчика по языку C# на платформе .NET

asp.net webservices dvd c# gridview Гудок курс Более 65 подробных видео уроков по теоретическим основам технологии сайтостроения ASP.NET и процессу создания и использованию вебсервисов.

DVD-курс по C#, .NET

2А часть. XML/TXT в аспекте ADO.NET Профессиональная подготовка разработчика по языку C# на платформе .NET

xml txt dvd c# ADO ADO.NET Гудок курс 70 подробных видео уроков по работе с форматами xml, txt, по работе с файлами и директориями. Разработка высокоорганизованных свойств для значительного сокращения объема исходного кода и облегчения дальнейшей модификации и многое-многое другое...

DVD-курс по C#, .NET

1 часть. Windows Forms Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок

185 подробнейших уроков (70 часов) лекций в формате видеоуроков по теории языка c# и платформы .NET. Практическое закрепление теоретического материала на примере создания Windows Forms - приложения видеоигры "Tanks"

DVD-курс по C#, .NET

2 часть. ADO.NET/SQL Профессиональная подготовка разработчика по языку C# на платформе .NET

Профессиональная подготовка на c# А. Гудок ADO.NET sql

165 подробных видео уроков по созданию приложений распределенных баз данных на примере разработки проектов с использований технологий ADO.NET (Connected model, Disconnected model, Typed DataSet, ...)


Я записываю курсы!
  Курс валют

НБУ курс евро






Отображение данных в GridView используя SqlDataSource



В данной статье я покажу как в ASP.NET отображать на странице табличные данные. Собственно, речь пойдет о контроле GridView, предназначенном для отображения данных, и контроле SqlDataSource, предназначенном для получения этих самих данных.

К примеру, имеется локальная база данных по имени Database:

DataBase Sql

В ней находится всего одна таблица по имени Users, которая состоит из трех столбцов: id(первичный ключ), Name и BirthDay.

DataTable Sql

Все, что нам требуется это отображать записи из данной таблицы на вебстранице и, по возможности, редактировать их с последующим сохранением в БД.

Итак. Поместите в дизайнере на страницу внутрь блока

<form id="myForm" runat="server"> 

контрол SqlDataSource (лично я предпочитаю помещать элементы на страницу в дизайнере, а настраивать и изменять в коде). Далее не обходимо настроить соответствующие параметры:

<asp:SqlDataSource runat="server" id="mySqlDataSource"
    ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
    SelectCommand="SELECT * FROM Users"
    UpdateCommand="Update Users SET 
        Name=@Name,BirthDay=@BirthDay WHERE id=@id"
    DeleteCommand="DELETE FROM Users WHERE id=@id">
</asp:SqlDataSource>

Первый параметр runat="server" – обязательное условие для серверного элемента управления. Следующий id="mySqlDataSource" – имя данного контрола. Обязательный параметр ConnectionString="<%$ сonnectionStrings:ConnectionString %>", определяет строку соединения с целевой БД. В данном случае знак $ указывает на работу с файлом web.config. В данном файле нам необходимо настроить строку соединения:

<configuration>
    <configSections>
	    …… 
    </configSections>
    <appSettings/>
    <connectionStrings>
	    <add name="ConnectionString" connectionString=
	        "Data Source=.\SQLEXPRESS;
	        AttachDbFilename=|DataDirectory|\Database.mdf;
	        Integrated Security=True;User Instance=True" 
	        providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <system.web>

Следующий параметр устанавливает команду выборки даннях из БД SelectCommand="SELECT * FROM Users". Если мы имеем намерение иметь возможность вносить изменения в таблицу Users, то следует определить еще и команду обновления данных UpdateCommand="Update Users SET Name=@Name,BirthDay=@BirthDay WHERE id=@id". А для удаления записи следует определить команду DeleteCommand="DELETE FROM Users WHERE id=@id".

Теперь осталось добавить на форму элемент GridView:

<asp:GridView ID="myGridView" runat="server" 
     DataSourceID="mySqlDataSource">
</asp:GridView>

Как видим, для этого элемента мы указали источник получения данных DataSourceID="mySqlDataSource".

Теперь, если открыть в браузере наш сайт, то мы на странице получим все записи из таблицы Users:

GridView

Однако, для того, что б иметь возможность редактировать записи, следует еще немного настроить наш GridView:

<asp:GridView ID="myGridView" runat="server" 
          DataSourceID="mySqlDataSource">
          <Columns>
              <asp:CommandField ShowDeleteButton="True" 
                  ShowEditButton="True" 
                  ShowSelectButton="True" />
          </Columns>
      </asp:GridView>

Мы добавили дополнительную колонку для размещения кнопок-ссылок выборки записи, редактирования и удаления. Теперь открыв страницу в браузере мы получим возможность выполнять все эти действия:

GridView

Естественно, если в SqlDataSource не определены команды UpdateCommand и DeleteCommand, то при попытке изменения данных мы получили бы ошибку.

Кроме того, мы можем настроить пейджинг для GridView. Для этого следует указать: для SqlDataSource параметр DataSourceMode="DataSet", для GridView - AllowPaging="True" PageSize="2". Так как у нас всего 3 записи, то значение для параметра PageSize я задал 2. Обычно задают 5-20 строк на страницу.

SqlDataSource

Вроде бы все чудно работает, но есть один нюанс. Поле id уникально и вносить в него изменения нельзя. Однако в нашем примере оно доступно для редактирования.

Исправляется ситуация следующим образом.

<asp:GridView ID="myGridView" runat="server" 
AutoGenerateColumns="False"
  DataSourceID="mySqlDataSource" AllowPaging="True" PageSize="2"
  DataKeyNames="id">
  <Columns>
      <asp:CommandField ShowDeleteButton="True" 
          ShowEditButton="True" 
          ShowSelectButton="True" />
          <asp:BoundField ReadOnly="true" HeaderText="User ID" 
          DataField="id" />
          <asp:BoundField HeaderText="Name" 
          DataField="Name" />
          <asp:BoundField HeaderText="BirthDay" 
          DataField="BirthDay" />
  </Columns>
</asp:GridView>

Мы убрали автогенерацию колонок и вручную задали требуемые столбцы. Обратите внимание, что для столбца id мы установили свойство ReadOnly="true", не дающее возможности редактировать ячейки в данном столбце. И главное, объявили свойство DataKeyNames="id", необходимое для правильного внесения изменений контролом SqlDataSource обратно в БД.

Вообще то поле id нам совсем и не надо для отображения, поэтому запись <asp:BoundField ReadOnly="true" HeaderText="User ID" DataField="id" /> можно и вовсе убрать.

Вот окончательный вариант нашей страницы:

<%@ Page Language="C#" AutoEventWireup="true"  
CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
  <head id="myHead" runat="server">
    <title>SqlDataSource - пример привязки к GridView</title>
</head>
<body>
    <form id="myForm" runat="server">


        <asp:SqlDataSource runat="server" id="mySqlDataSource"
          ConnectionString=
            "<%$ ConnectionStrings:ConnectionString %>"
          SelectCommand="SELECT * FROM Users" 
          DataSourceMode="DataSet"
          UpdateCommand="Update Users SET 
             Name=@Name,BirthDay=@BirthDay WHERE id=@id"
          DeleteCommand="DELETE FROM Users WHERE id=@id">
        </asp:SqlDataSource>


        <asp:GridView ID="myGridView" runat="server" 
          AutoGenerateColumns="False"
          DataSourceID="mySqlDataSource" AllowPaging="True" 
          PageSize="2" DataKeyNames="id">
          <Columns>
            <asp:CommandField ShowDeleteButton="True" 
               ShowEditButton="True" ShowSelectButton="True" />
            <asp:BoundField HeaderText="Name" 
            DataField="Name" />
            <asp:BoundField HeaderText="BirthDay"
            DataField="BirthDay" />
          </Columns>
        </asp:GridView>

    </form>
  </body>
</html>

Конечно, для крупных и серъезных приложений подход с SqlDataSource почти неприемлем, однако для первого знакомства с принципом привязки данных данные примеры очень полезны, тем более, что принцип работы у того же ObjectDataSource почти ничем не отличается. Но как всегда – различия в деталях.

В следующих статьях мы поговорим о более профессиональном подходе к привязке данных с использованием контрола ObjectDataSource.



Больше информации читайте по теме:



Оценить статью:

Оценивая статью, Вы подсказываете нам насколько данная информация стала полезной именно для Вас. Мы ожидаем, прежде всего, оценку доступности материала для понимания и простоты его изложения. Дополнительные комментари, вопросы, дополнения и замечания Вы можете указать на странице От Вас

Частичное, или полное копирование материала данной статьи возможно лишь при размещении ссылки на данную страницу.


            
        


        Maks    11.10.2010 21:17:21
        

Can you put the source code?


        Саша Гудок    23.10.2010 15:54:50
        

Unfortunately I cant, because the code was written directly in the article and then I deleted him. But the code exactly working. Copied directly from the article




Имя:  


Текст комментариев (не больше 600 знаков):  
введите не более 600 знаков



Введите символы с картинки:
Капча имеет "срок годности". Поэтому, если необходимо обновите страницу.



Сантехник срочно
c# курс Гудок   курс по ASP.NET Гудок   курс по ADO.NET Гудок   курс по XML txt Гудок   курс по рефлексии и многопоточности Гудок