Симон Робинсон - C# для профессионалов. Том II

Скачивание начинается... Если скачивание не началось автоматически, пожалуйста нажмите на эту ссылку.
Жалоба
Напишите нам, и мы в срочном порядке примем меры.
Описание книги "C# для профессионалов. Том II"
Описание и краткое содержание "C# для профессионалов. Том II" читать бесплатно онлайн.
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Эта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
<asp:DataList Runat="server" ... >
<ItemTemplate>
...
</ItemTemplate>
</asp:DataList>
Внутри объявлений шаблонов нам нужно будет выводить разделы HTML, включая параметры с данными, связанными с элементом управления. Существует специальный синтаксис, который можно использовать для вывода таких параметров:
<%# expression %>
expression может быть просто выражением, связывающим параметр со свойством страницы или элемента управления, но, скорее, состоит из выражения DataBinder.Eval(). Эта полезная функция может использоваться для вывода данных из таблицы, связанной с элементом управления, определяя столбец с помощью следующего синтаксиса:
<%# DataBinder.Eval(Container.DataItem, "ColumnName") %>
Существует также необязательный третий параметр, позволяющий сформатировать возвращаемые данные, который имеет синтаксис, идентичный выражениям форматирования строк, используемым в других местах.
Полное описание доступных шаблонов дано в следующей таблице:
Шаблон Описание <ItemTemplate> Шаблон используется для элементов списка. <HeaderTemplate> Шаблон используется для вывода перед списком. <FooterTemplate> Шаблон используется для вывода после списка. <SeparatorTemplate> Шаблон используется между элементами списка. <AlternatingItemTemplate> Шаблон для альтернативных элементов, способствует проявлению видимости. <SelectedItemTemplate> (Только DataList) Шаблон используется для выбранных элементов в списке. <EditItemTemplate> (Только DataList) Шаблон используется для элементов в списке, которые редактируются.Рассмотрим это на примере. Используем для него запрос существующих данных в PCSWebApp3.
ПримерРасширим таблицу вверху страницы, чтобы она содержала DataList, выводящий каждое из мероприятий, хранящихся в базе данных. Мы сделаем эти мероприятия выбираемыми, чтобы данные любого мероприятия можно было вывести, щелкая на его имени. Изменения в коде в PCSWebApp3 показаны ниже:
<tr>
<td align=middle colSpan=3>
<asp:validationsummary id=validationSummary Runat="server" headertext="Before submitting your request:" />
</td>
</tr>
<tr>
<td align-left colSpan=3 width="100%">
<table cellspacing=4>
<tr>
<td width="40%" bgcolor="#ccffcc" >
<asp:DataList Runat="server"
ID="eventDetails2"
OnSelectedIndexChanged="eventDetails2_SelectedIndexChanged" >
<ItemTemplate>
<asp:LinkButton Runat="server" CommandName="Select"
forecolor="#0000ff" ID="Linkbutton1">
<%# DataBinder.Eval(Container.DataItem, "Name") %>
</asp:LinkButton>
<br>
</ItemTemplate>
<SelectedItemTemplate>
<b><%# DataBinder.Eval(Container.DataItem, "Name") %></b>
<br>
</SelectedItemTemplate>
</asp:DataList>
</td>
<td valign="top">
<asp:Label Runat="server" ID="edName"
Font-Name="Arial" Font-Bold="True"
Font-Italic="True" Font-Size="14"> Select an event to view details. </asp:Label>
<br>
<asp:Label Runat="server" ID="edDate" />
<br>
<asp:Label Runat="server" ID="edRoom" />
<br>
<asp:Label Runat="server" ID="edAttendees" />
</td>
</tr>
</table>
</td>
</tr>
</table>
Здесь мы добавили новую строку таблицы, содержащую сведения с DataList в одном столбце и представленные данные в другом. Представление данных является просто четырьмя метками для свойств мероприятия, одна из которых содержит текст "Select an event to view details", когда не выбрано никакого мероприятия (ситуация при первой загрузке формы).
DataList использует <ItemTemplate> и <SelectedItemTemplate> для вывода данных мероприятия. Чтобы облегчить выбор, мы инициируем команду Select внутри <ItemTemplate>, что автоматически изменяет выбор. Мы используем также для заполнения данными мероприятия событие OnSelectedIndexChanged, которое включается, когда команда Select изменяет выбор. Обработчик событий для этого показан ниже (Отметим, что нам нужно сначала выполнить метод DataBind() для обновления выбора):
protected void eventDetails2_SelectedIndexChanged(object sender, System.EventArgs e) {
eventDetails2.DataBind();
DataRow selectedEventRow =
eventTable.Rows[eventDetails2.SelectedIndex];
edName.Text = (string)selectedEventRow["Name"];
edDate.Text =
"<b>Date:</b> " +
((DateTime)selectedEventRow["Event Date"]).ToLongDateString();
edAttendees.Text =
"<b>Attendees:</b> " + (string)selectedEventRow["AttendeeList"];
DataRow selectedEventRoomRow =
ds.Tables["Rooms"].Rows[(int)selectedEventRow["Room"] -1];
edRoom.Text = "<b>Room:</b> " + selectedEventRoomRow["Room"];
}
Здесь данные в ds и eventTable используются для заполнения деталями мероприятия.
Как и в случае DataGrid ранее, необходимо в Page_Load() задать и связать данные для eventDetails2:
eventDetails1.DataSource = eventTable;
eventDetails2.DataSource = eventTable;
...
eventDetails1.DataBind();
eventDetails2.DataBind();
И заново связать в submitButton_Click():
eventDetails1.DataBind();
eventDetails2.DataBind();
Детали мероприятия представлены в таблице:
О шаблонах и элементах управления связыванием данных можно было бы написать целую книгу. Однако изложенного материала в данном разделе вполне достаточно для того, чтобы начать работать.
Конфигурация приложения
В этой главе без каких-либо подробностей упоминалось о существовании концептуального приложения, содержащего страницы и конфигурационные настройки. Это важная концепция для восприятия, особенно при конфигурировании web-сайтов множеством одновременных пользователей.
Сразу сделаем несколько замечаний о терминологии и времени жизни приложения.
Приложение определяется как все файлы проекта, оно сконфигурировано с помощью файлов web.config. Объект Application создается, когда приложение запускается в первый раз, что происходит, когда поступает первый запрос HTTP. В это время также срабатывает событие Application_Start, обработчик событий для которого детально описывается в global.asax (вместе со всеми другими событиями, обсуждаемыми здесь), и создается пул экземпляров HttpApplication. Каждый входящий запрос получает один из этих экземпляров, который выполняет обработку запроса (это означает, что объекты HttpApplication не нуждаются в копировании при одновременном доступе, в отличие от глобального объекта Application). Когда все экземпляры HttpApplication заканчивают свою работу срабатывает событие Application_End, и приложение прекращается, разрушая объект Application.
Когда отдельный пользователь использует приложение Web, запускается сеанс. Как и в случае приложения, это включает создание специфического для пользователя объекта Session вместе с включением события Session_Start. В течение сеанса в отдельные запросы могут входить события Application_BeginRequest и Application_EndRequest. Это повторяется несколько раз за сеанс, когда в приложении происходит доступ к различным ресурсам. Отдельные сеансы могут прекращаться вручную или будут прерываться, если не получают больше никаких запросов. Прекращение сеанса включает событие Session_End и разрушение объекта Session.
Как этот процесс может нам помочь? Существует несколько вещей, которые можно сделать, чтобы рационализировать приложение. Вернемся к приложению, которое разрабатывалось в этой главе. Каждый раз при доступе к странице .aspx множество записей заполняется содержимым PCSWebApp3.mdb. Это множество записей всегда используется только для считывания данных, так как для добавления мероприятий в базу данных используется другой метод. В таких случаях можно заполнить множество записей в обработчике событий Application_Start и сделать его доступным для всех пользователей. Единственный раз, когда понадобиться обновить множество записей, возникнет, если будет добавлено событие. Это существенно повышает производительность, так как в большинстве запросов не будет требоваться доступ к базе данных.
Подписывайтесь на наши страницы в социальных сетях.
Будьте в курсе последних книжных новинок, комментируйте, обсуждайте. Мы ждём Вас!
Похожие книги на "C# для профессионалов. Том II"
Книги похожие на "C# для профессионалов. Том II" читать онлайн или скачать бесплатно полные версии.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Отзывы о "Симон Робинсон - C# для профессионалов. Том II"
Отзывы читателей о книге "C# для профессионалов. Том II", комментарии и мнения людей о произведении.