Методика и порядок выполнения работы
Использование элемента GridView (DataGrid)
В приведенном ниже примере в качестве источника данных используется база данных в формате MS ACCESS, содержащая таблицу lesson с полями: id (тип - счетчик); Title (тип - текст); Teacher (тип - текст); Type (тип - текст).
1. Создайте файл в формате MS ACCESS, содержащий эту таблицу.
2. Создайте новый проект по шаблону ASP.NET Web Application.
3. Для страницы Default.aspx выберите режим отображения Split.
4. Из панели элементов управления Toolbox (отображается с помощью меню View → Toolbox) перетащите в форму элемент GridView (из группы Data).
5. Для элемента GridView настройте источник данных (Choose Data Source, Configure Data Source) и форматирование (можно выбрать один из шаблонов автоформатирования – Auto Format ).
Автоматически сгенерированный код представления (файл Default.aspx ) может выглядеть следующим образом:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="ASPNETGView2._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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
BackColor="White" BorderColor="#E7E7FF" BorderStyle="None" BorderWidth="1px"
CellPadding="3" DataKeyNames="id" DataSourceID="AccessDataSource1"
GridLines="Horizontal">
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<RowStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
<Columns>
<asp:BoundField DataField="id" HeaderText="id" InsertVisible="False"
ReadOnly="True" SortExpression="id" />
<asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
<asp:BoundField DataField="Teacher" HeaderText="Teacher"
SortExpression="Teacher" />
<asp:BoundField DataField="Type" HeaderText="Type" SortExpression="Type" />
</Columns>
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
<AlternatingRowStyle BackColor="#F7F7F7" />
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="D:\CSharp\ASPNETDataGrid\lessons.mdb"
SelectCommand="SELECT * FROM [lesson]"></asp:AccessDataSource>
</div>
</form>
</body>
</html>
В данном примере использован элемент управления <asp:DataGrid>, имеющий идентификатор "GridView1".
Если источник данных не настроен автоматически (при описании кода представления):
<!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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataGrid ID="GridView1" runat="server" BackColor="White"
BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3"
CellSpacing="1" GridLines="None" >
<FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
<SelectedItemStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#C6C3C6" ForeColor="Black" HorizontalAlign="Right" />
<ItemStyle BackColor="#DEDFDE" ForeColor="Black" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
</asp:DataGrid>
</div>
</form>
</body>
</html>
то это можно сделать программно в соответствующем программном коде, например:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.OleDb;
namespace ASPNETDataGrid
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Подключение к источнику данных
OleDbConnection cn = new OleDbConnection();
cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ @"data source = D:\From-Nb-D\Work\method\CSharp\ASPNETDataGrid\Lessons.mdb";
cn.Open();
// Формируется строка SQL запроса данных из источника
string str = "SELECT * from lesson";
// Происходит соединение с базой данных
// с помощью управляемого провайдера OLE DB
OleDbDataAdapter dAdapt = new OleDbDataAdapter(str, cn);
// Получение данных из источника
DataSet myDS = new DataSet("lessons");
dAdapt.Fill(myDS, "lesson");
// Заполнение таблицы данными
GridView1.DataSource = myDS.Tables["lesson"].DefaultView;
GridView1.DataBind();
cn.Close();
}
}
}
}
Следует обратить внимание на то, что в программе добавлено пространство имен:
using System.Data.OleDb;
Свойство объекта Page - IsPostBack показывает, была ли страница клиента загружена в первый раз или повторно в ответ на переданные клиентом данные.
Использование элемента DataList
В следующем примере в качестве источника данных также будем использовать базу данных в формате MS ACCESS, содержащую таблицу lesson.
1. Создайте новый проект по шаблону ASP.NET Web Application.
2. Для страницы Default.aspx выберите режим отображения Split
3. Из панели элементов управления Toolbox (отображается с помощью меню View → Toolbox) перетащите в форму элемент DataList (из группы Data).
4. Для элемента DataList настройте источник данных (Choose Data Source, Configure Data Source) и форматирование (можно выбрать один из шаблонов автоформатирования – Auto Format).
Получится следующий код представления:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs"
Inherits="ASPNETGView2._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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:DataList ID="DataList1" runat="server" BackColor="White"
BorderColor="#999999" BorderStyle="Solid" BorderWidth="1px" CellPadding="3"
DataKeyField="id" DataMember="DefaultView" DataSourceID="AccessDataSource1"
ForeColor="Black" GridLines="Vertical" style="margin-right: 0px" Width="262px" >
<FooterStyle BackColor="#CCCCCC" />
<AlternatingItemStyle BackColor="#CCCCCC" />
<SelectedItemStyle BackColor="#000099" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="Black" Font-Bold="True" ForeColor="White" />
<ItemTemplate>
id:
<asp:Label ID="idLabel" runat="server" Text='<%# Eval("id") %>' />
<br />
Title:
<asp:Label ID="TitleLabel" runat="server" Text='<%# Eval("Title") %>' />
<br />
Teacher:
<asp:Label ID="TeacherLabel" runat="server" Text='<%# Eval("Teacher") %>' />
<br />
Type:
<asp:Label ID="TypeLabel" runat="server" Text='<%# Eval("Type") %>' />
<br />
</ItemTemplate>
</asp:DataList>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="D:\CSharp\ASPNETDataGrid\lessons.mdb"
SelectCommand="SELECT * FROM [lesson]">
</asp:AccessDataSource>
</div>
</form>
</body>
</html>
Альтернативный вариант – использование метода GetDataItem объекта DataBinder для заполнения элементов вместо <asp:Label>.
Ниже представлен соответствующий код представления:
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="ASPNETDataGrid._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="Head2" runat="server">
<title>Lessons</title>
</head>
<body>
<form id="form2" runat="server">
<div>
<h1>Lessons</h1>
</div>
<asp:DataList ID="DataList1" runat="server" BackColor="White"
BorderColor="White" BorderStyle="Ridge" BorderWidth="2px" CellPadding="3"
CellSpacing="1">
<FooterStyle BackColor="#C6C3C6" ForeColor="Black" />
<ItemStyle BackColor="#DEDFDE" ForeColor="Black" />
<SelectedItemStyle BackColor="#9471DE" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#E7E7FF" />
<ItemTemplate>
<%# DataBinder.GetDataItem(Container)%>
</ItemTemplate>
</asp:DataList>
</form>
</body>
</html>
Программный код:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace ASPNETDataGrid
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList DWeek = new ArrayList();
DWeek.Add("Sunday");
DWeek.Add("Monday");
DWeek.Add("Tuesday");
DWeek.Add("Wednesday");
DWeek.Add("Thursday");
DWeek.Add("Friday");
DWeek.Add("Saturday");
DataList1.DataSource = DWeek;
DataList1.DataBind();
}
}
}
}
Использование элемента ListBox (с заполнением данными из
обычного массива)
1. Создайте новый проект по шаблону ASP.NET Web Application.
2. Для страницы Default.aspx выберите режим отображения Split
3. Из панели элементов управления Toolbox (отображается с помощью меню View → Toolbox) перетащите в форму элемент ListBox (из группы Data).
Получится следующий код представления:
<%@ Page Language="C#" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="ASPNETListBox._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 runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="Form1" runat="server">
<asp:ListBox ID="ListBox1" runat="server"></asp:ListBox>
</form>
</body>
</html>
и соответствующий программный код:
using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
namespace ASPNETListBox
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Массив строк, который нужно вставить
ArrayList DWeek = new ArrayList();
DWeek.Add("Sunday");
DWeek.Add("Monday");
DWeek.Add("Tuesday");
DWeek.Add("Wednesday");
DWeek.Add("Thursday");
DWeek.Add("Friday");
DWeek.Add("Saturday");
// Связывание элемента управления с объектом DWeek
ListBox1.DataSource = DWeek;
ListBox1.DataBind();
}
}
}
Задание к лабораторной работе
Задание. Создайте Web-приложение ASP.NET, отображающее на веб-странице содержимое таблицы Exam, содержащей поля: идентификатор записи, фамилия студента, название дисциплины, оценка. При разработке используйте элемент <asp:GridView> или <asp:DataList>.
Содержание отчета и его форма
Отчет по лабораторной работе должен состоять из:
1) названия лабораторной работы;
2) ответов на контрольные вопросы;
3) формулировки индивидуальных заданий и порядка их выполнения.
Контрольные вопросы
1. Какие два элемента WebForm используются для управления отображением данных?
2. Дайте характеристику элементу управления GridView (DataGrid).
3. Алгоритм настройки элемента управления GridView.
4. Охарактеризуйте элемент управления DataList.
5. Перечислите основные этапы работы с элементом управления DataList.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|