Применение элемента управления DataGrid

Применение элемента управления DataGrid

В первых версиях набора инструментальных средств разработчика .NET Framework SDK для демонстрации примеров итерирования коллекции данных применялся пользовательский элемент управления DataGrid, который имеет очень мало или не имеет вообще ничего общего с элементом управления ActiveX. По сути, он означает использование в Web-форме некоторых шаблонных функций, которые выполняются в серверной части в целях создания HTML-кода для клиентской части. Эта технология обладает очень большими возможностями, поскольку позволяет создавать весьма сложную логику, связанную с пользовательским интерфейсом, в виде повторно используемого компилированного объекта, который полностью безопасен и совместим с любым типом Web-броузера. Дело в том, что серверные элементы управления в итоге создают HTML-код и вопросы совместимости полностью зависят от разработчика.

Элемент DataGrid является характерным примером элемента управления, который позволяет разработчику просто связать объект DataSet с объектом DataGrid и мгновенно получить визуальное представление данных. В листинге 11.3 показан пример создания базового запроса для заполнения данными элемента управления DataGrid. Для использования любого серверного элемента управления его нужно объявить, а после объявления его методы и свойства можно использовать так же, как любые другие объекты Web-страницы. Итак, здесь создается новая Web-форма WebGrid.aspx, которая содержит элемент управления DataGrid.

ЛИСТИНГ 11.3. Web-форма WebGrid.aspx

<%@ Import Namespace = "System.Data" %>

<%@ Import Namespace = "System.Data.SqlClient" %>

<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebGrid.aspx.vb" Inherits="Novelty.WebGrid"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML>

 <HEAD>

  <title>WebGrid</title>

<%@

 Dim connString As String

 connString = "server=(local);database=Novelty;TRUSTED_CONNECTION=Yes"

 Dim conn As New SqlConnection(connString)

 Dim As New SqlCommand("SELECT * FROM tblCustomer", conn)

 conn.Open()

 Dim dReader As SqlDataReader = cmd.ExecuteReader(CommandBehavior.CloseConnection)

 dataGrid1.DataSource = dReader

 dataGrid1.DataBind

 dReader.Close()

 conn.Close()

%>

  <meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

  <meta name="CODE_LANGUAGE" content="Visual Basic 7.0">

  <meta name="vs_defaultClientScript" content="JavaScript">

  <meta name="vs_targetSchema" content="http://schemes.microsoft.com/intellisense/ie5">

 </HEAD>

 <body MS_POSITIONING="GridLayout">

  <form id="Form1" method="post" runat="server">

    <asp:DataGrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 179px; POSITION: absolute; TOP: 73px" runat="server" Width="640px" Height="480px" BackColor="#fffff5" BorderColor="black" ShowFooter="true" CellPadding="1" CellSpacing="1" Font-Name="Arial" Font-Size="8pt" HeaderStyle-BackColor="#c0c0c0" EnableViewState="false">

    </asp:DataGrid>

   </form>

 </body>

</HTML>  

После выполнения этого кода по отношению к базе данных Novelty полученные результаты будут иметь такой вид, как на рис. 11.12. 

РИС. 11.12. Внешний вид Web-формы WebGrid.aspx

Серверный элемент управления предлагает способ отображения данных без создания вручную какого-либо кода, связанного с механизмом отображения данных. Учтите, что серверные элементы управления в большинстве своем созданы на основе фрагментов Web-страниц, или пэйджлетов (рagelet). Они не являются полноценными ASPX-страницами, имеют расширение .as и представляют только некоторые разделы Web-страницы, например повторно используемую форму или код, который применяется для отображения сообщения об ошибке и является частью более общей Web-страницы с информацией о происходящих ошибках. Такие серверные элементы управления позволяют выполнять практически любые функции с помощью Web-ориентированного пользовательского интерфейса.

НА ЗАМЕТКУ

В cреде с динамическим содержимым некоторые переменные, например строка подключения к базе данных, часто остаются статическими. В листинге 11.1 для строки подключения в куче ищется (interned) экземпляр строки connString. Если он найден, то проверяется его содержимое. Если значение экземпляра в куче совпадает со значением строки connString, то оно используется приложением. В противном случае создается новый экземпляр и ему присваивается значение строки connString. Данный подход позволяет экономить ресурсы, потому что среда CLR гораздо быстрее выполняет проверку кучи, чем создание нового экземпляра объекта-строки. Такое повторное использование строк позволяет повысить производительность приложения. 

Данный способ не следует применять для строк, значение которых часто изменяется, потому что нет никакого смысла проверять значение экземпляра, когда наверняка известно, что оно другое. Несмотря на это, его можно применять для свойств, если свойства содержат особый набор значений, например при работе с перечислением. Для повышения производительности приложения и эффективного использования ресурсов в таких случаях применяется метод intern. В главе 12, "Web-службы и технологии промежуточного уровня", описываются другие технологии повышения эффективности приложений.