<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>VBprog.ru - Программирование на Visual Basic</title>
	<atom:link href="http://vbprog.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://vbprog.ru</link>
	<description>Сайт для программистов на Visual Basic Net</description>
	<lastBuildDate>Mon, 21 Nov 2011 18:08:30 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Использование Базы Данных Ms Access в Visual Basic 2010</title>
		<link>http://vbprog.ru/dbaccess/</link>
		<comments>http://vbprog.ru/dbaccess/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 18:07:05 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Статьи]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=366</guid>
		<description><![CDATA[В данной статье рассказывается об использовании Базы Данных Access в своих приложениях написанных на Visual Basic 2010. Приводится пример исходного кода с подробным описанием для создания, редактирования и изменения как таблиц, так и записей базы данных. В данном примере мы также познакомимся с использованием таких контролов, как ListBox, ListView, использование диалоговых окон InputBox, MessageBox и [...]]]></description>
			<content:encoded><![CDATA[<p>В данной статье рассказывается об использовании Базы Данных Access в своих приложениях написанных на Visual Basic 2010.<br />
Приводится пример исходного кода с подробным описанием для создания, редактирования и изменения как таблиц, так и записей базы данных.<br />
В данном примере мы также познакомимся с использованием таких контролов, как ListBox, ListView, использование диалоговых окон InputBox, MessageBox и другое.<br />
Перед использованием кода в Проект добавляем ссылку на компонент &#171;Microsoft ADO Ext. 2.8 for DLL and Security&#187; &#8212; Компонент для подклучения к базе данных и &#171;Microsoft Jet and Replication Object 2.6 Library&#187; &#8212; компонент используемый в программе для сжатия базы данных.<br />
<br /><span id="more-366"></span><br />
Весь проект сосоит из формы &#8212; Form1 и Модуля &#8212; Module1.<br />
<br />Начальные параметры файла Form1</p>
<pre class="brush: vbnet;">
Public Class Form1
	'Здесь будем описывать Элементы управления формой
End Class
</pre>
<p>На рисунке 1 показано, как размещены элементы управления на форме</p>
<p><img src="/images/pict1.jpg"/><br />
<br />Рисунок 1. Внешний вид формы</p>
<p>Начальные параметры файла Module1</p>
<pre class="brush: vbnet;">
Module Module1
	'Здесь будем описывать работу с базой данных
End Module
</pre>
<p>Далее Module1 Будет содержать следующие параметры</p>
<pre class="brush: vbnet;">
Imports System.Data
Imports System.Data.OleDb

Module Module1
    Dim DataBaseFileName As String = Application.StartupPath &#038; "\DataBase.mdb" 'Указывает расположение Базы Данных, располагается в каталоге, из которого была запущена программма
    Dim Connector As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &#038; DataBaseFileName) 'Подключение к Базе Данных
	Public Class DB
		'Данный класс будет содержать функции по работе с Базой данных
	End Class
	Public Class Table
		'Данный класс будет содержать функции по работе с Таблицами
	End Class
    Public Class Zap
		'Данный класс будет содержать функции по работе с Записями базы данных
	End Class
End Module
</pre>
<p>Далее к этому возвращаться не будем, просто будем указывать, что используем необходимый нам класс.<br />
<br />Для начала создадим баду данных. Добавим процедуру в Class DB.</p>
<pre class="brush: vbnet;">
      Shared Sub DBnew()
         Dim cat As New ADOX.Catalog
         Try
            'Создаем Базу
			cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &#038; DataBaseFileName)
         Catch ex As Runtime.InteropServices.COMException
            MessageBox.Show(ex.Message) 'Если ошибки, то выводим сообщение
         Finally
            cat = Nothing
            'Проверяем файл на диске
            If IO.File.Exists(DataBaseFileName) = True Then
               MessageBox.Show("База Данных Создана")
            Else
               MessageBox.Show("Ошибка Создания Базы Данных")
            End If
         End Try
      End Sub
</pre>
<p>Во время работы с базой данных она может вырасти до неимоверных размеров, поэтому создадим еще одну процедуру, которая будет сжимать нашу базу данных. База будет сжата с именем DataBaseCompress.mdb.</p>
<pre class="brush: vbnet;">
      Shared Sub Compress()
         Dim jro As JRO.JetEngine
         'Проверяем существует ли база данных
         If IO.File.Exists(DataBaseFileName) = False Then
            MessageBox.Show("Файл " &#038; DataBaseFileName &#038; " не найден", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Exit Sub
         End If
         Try 'Сжимаем
            jro = New JRO.JetEngine()
            jro.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &#038; DataBaseFileName, _
            "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &#038; Application.StartupPath &#038; "\DataBaseCompress.mdb" &#038; ";Jet OLEDB:Engine Type=5")
            'Проверяем существует ли файл сжатой базы данных
            If IO.File.Exists(DataBaseFileName) = True Then
               MessageBox.Show("База данных успешно сжата и создан файл: " &#038; Application.StartupPath &#038; "\DataBaseCompress.mdb", "Отчет", MessageBoxButtons.OK, MessageBoxIcon.Information)
            End If
         Catch ex As Exception
            MessageBox.Show(ex.Message) 'Если ошибки, то выводим сообщение
         End Try
      End Sub
</pre>
<p>В форму к кнопке &#171;Создать базу данных&#187; и &#171;Сжать базу данных&#187; добавим. При нажатии кнопки &#171;Создать Базу&#187;, если файл базу уже существует на диске, будет выдано сообщение, говорящее, что файл уже существует.</p>
<pre class="brush: vbnet;">
   Private Sub ButtonDBNew_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDBNew.Click
      DB.DBnew() 'Создание базы
   End Sub
   Private Sub ButtonDBCompress_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDBCompress.Click
      DB.Compress() 'Сжатие базы
   End Sub
</pre>
<p>Переходим к описанию процедур в Public Class Table<br />
<br />Процедура добавления таблицы в Базу. После добавления таблицы в базу добавляем в ListBox имя добавленной нами таблицы</p>
<pre class="brush: vbnet;">
      Shared Sub Add(ByRef ListBox1 As ListBox, ByVal Name As String)
         Try
            Connector.Open()
            Dim Command As New OleDbCommand("Create Table [" &#038; Name &#038; "] ([Name] Text ,[Phone] Text)", Connector)
            Command.ExecuteNonQuery()
            Connector.Close()
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         Finally
            ListBox1.Items.Add(Name) 'добавляем в ListBox имя добавленной нами таблицы
         End Try
      End Sub
</pre>
<p>Добавим процедуру загрузки таблиц базы данных в ListBox.</p>
<pre class="brush: vbnet;">
      Shared Sub Load(ByRef ListBox1 As ListBox)
         Try
            ListBox1.Items.Clear()
            Connector.Open()
            Dim TmpDbRows As DataRowCollection = Connector.GetOleDbSchemaTable(OleDb.OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}).Rows
            For i = 0 To TmpDbRows.Count - 1
               ListBox1.Items.Add(TmpDbRows(i).Item("TABLE_NAME").ToString)
            Next i
            Connector.Close()
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         End Try
      End Sub
</pre>
<p>Добавляем в форму процедуры</p>
<pre class="brush: vbnet;">
   Private Sub ButtonDBLoad_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonDBLoad.Click
      DB.Load(ListBox1) 'Загрузка таблиц базы данных в LIstBox1
   End Sub
   Private Sub ButtonTableAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTableAdd.Click
      Table.Add(ListBox1, InputBox("Введите имя таблицы", "Добавление таблицы")) 'Добавляем в Базу новую таблицу с именем, введенным в диалоговом окне InputBox
   End Sub
</pre>
<p>Базу данных мы уже создали, научились добавлять таблицы и просматривать какие таблицы находятся в нашей базе данных.<br />
<br />Теперь напишем процедуру, которая будет переименовывать выбранную в ListBox1 таблицу и добавим в Class Table</p>
<pre class="brush: vbnet;">
	  Shared Sub ReName(ByRef ListBox1 As ListBox, ByVal NewName As String)
         Dim OldName As String = ListBox1.Items(ListBox1.SelectedIndex)
         Dim objADOXDatabase
         Try
            objADOXDatabase = CreateObject("ADOX.Catalog")
            objADOXDatabase.ActiveConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &#038; DataBaseFileName
            objADOXDatabase.Tables(OldName).Name = NewName
            objADOXDatabase = Nothing
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         Finally
            ListBox1.Items(ListBox1.SelectedIndex) = NewName
            MessageBox.Show("Таблица переименована")
         End Try
      End Sub
</pre>
<p>Теперь напишем процедуру, которая будет удалять выбранную в ListBox1 таблицу и добавим в Class Table</p>
<pre class="brush: vbnet;">
      Shared Sub Delete(ByRef ListBox1 As ListBox)
         Dim Name As String = ListBox1.SelectedItem
         Try
            Connector.Open()
            Dim Command As New OleDbCommand("DROP TABLE [" &#038; Name &#038; "]", Connector)
            Command.ExecuteNonQuery()
            Connector.Close()
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         Finally
            ListBox1.Items.Remove(ListBox1.SelectedItem)
            MessageBox.Show("Удалена таблица:" &#038; Name)
         End Try
      End Sub
</pre>
<p>В форме привяжем к кнопкам соответствующий код:</p>
<pre class="brush: vbnet;">
   Private Sub ButtonTableDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTableDel.Click
      Table.Delete(ListBox1)' Удаляем Таблицу
   End Sub
   Private Sub ButtonTableReName_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonTableReName.Click
      Table.ReName(ListBox1, InputBox("Введите новое имя таблицы", "Изменение имени таблицы", ListBox1.SelectedItem)) 'Переименовываем таблицу
   End Sub
</pre>
<p>Теперь добавим в <strong>&#171;Public Class Zap&#187;</strong> процедуры, которые будут отвечать за добавление, изменение и удаление записей из таблицы<br />
<br />Добавление записи в таблицу. В первое текстовое поле вводим фамилию, во второе &#8212; телефон.</p>
<pre class="brush: vbnet;">
      Shared Sub Add(ByVal Table As String, ByRef ListView1 As ListView, ByVal Name As String, ByVal Phone As String)
         Try
            Dim Command As New OleDbCommand("Insert Into [" &#038; Table &#038; "] ([Name], [Phone]) values ('" &#038; Name &#038; "', '" &#038; Phone &#038; "')", Connector)
            Connector.Open()
            Command.ExecuteNonQuery()
            Connector.Close()
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         End Try
         ListView1.Items.Add(Name)
         ListView1.Items.Item(ListView1.Items.Count - 1).SubItems.Add(Phone)
      End Sub
</pre>
<p>Изменение выделенной записи в ListView</p>
<pre class="brush: vbnet;">
      Shared Sub Edit(ByVal Table As String, ByRef ListView1 As ListView, ByVal Name As String, ByVal Phone As String)
         Try
            Dim Command As New OleDbCommand("UPDATE [" &#038; Table &#038; "] SET [Name]='" &#038; Name &#038; "', [Phone]='" &#038; Phone &#038; "' WHERE ([Name] Like '" &#038; ListView1.SelectedItems.Item(0).Text &#038; "')", Connector)
            Connector.Open()
            Command.ExecuteNonQuery()
            Connector.Close()
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         End Try
         ListView1.SelectedItems.Item(0).Text = Name
         ListView1.SelectedItems.Item(0).SubItems.Item(1).Text = Phone
      End Sub
</pre>
<p>Процедура удаление выделенной записи.</p>
<pre class="brush: vbnet;">
      Shared Sub Delete(ByVal Table As String, ByRef ListView1 As ListView)
         Try
            Dim Command As New OleDbCommand("DELETE FROM [" &#038; Table &#038; "] WHERE [Name]='" &#038; ListView1.SelectedItems.Item(0).Text &#038; "'", Connector)
            Connector.Open()
            Command.ExecuteNonQuery()
            Connector.Close()
         Catch ex As Exception
            MessageBox.Show(ex.Message)
         End Try
         ListView1.SelectedItems.Item(0).Remove()
      End Sub
</pre>
<p>В форме кнопкам Добавить, изменить и удалить присвоим соответствующие процедуры</p>
<pre class="brush: vbnet;">
   Private Sub ButtonZapAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonZapAdd.Click
      Zap.Add(ListBox1.SelectedItem, ListView1, TextBox1.Text, TextBox2.Text)
   End Sub
   Private Sub ButtonZapEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonZapEdit.Click
      Zap.Edit(ListBox1.SelectedItem, ListView1, TextBox1.Text, TextBox2.Text)
   End Sub
   Private Sub ButtonZapDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonZapDel.Click
      Zap.Delete(ListBox1.SelectedItem, ListView1)
   End Sub
</pre>
<p>Добавим еще процедуру обработки двойного клика мышью в ListView, для вывода выделенной записи в текстовые поля для редактирования.</p>
<pre class="brush: vbnet;">
   Private Sub ListView1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListView1.DoubleClick
      Try
         TextBox1.Text = ListView1.SelectedItems.Item(0).Text
         TextBox2.Text = ListView1.SelectedItems.Item(0).SubItems.Item(1).Text
      Catch ex As Exception
         MessageBox.Show(ex.Message)
      End Try
   End Sub
</pre>
<p>В данном примере много недоработок в том числе и нет обработчика ошибок:<br />
например, не проверяются данные при создании, переименовывании таблиц, если вы не введете название таблицы, то будет выведена ошибка и другое&#8230;</p>
<p><strong><a href="/primer/dbaccess.rar">Скачать пример использования Базы Данных Ms Access в Visual Basic 2010</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/dbaccess/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 101. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением</title>
		<link>http://vbprog.ru/primer101/</link>
		<comments>http://vbprog.ru/primer101/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 08:13:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=343</guid>
		<description><![CDATA[Web-служба, предоставляющая текущие курсы валют, есть и у Национального банка Республики Беларусь. На примере потребления сервиса Web-службы этого банка создадим Windows-приложение (настольное приложение), получающее справочную информацию о текущих курсах валют в онлайновом режиме. Для решения этой задачи запустим VB2010, выберем шаблон Windows Forms Application. В конструкторе формы добавим кнопку и элемент управления DataGridView. Мы намереваемся [...]]]></description>
			<content:encoded><![CDATA[<p>Web-служба, предоставляющая текущие курсы валют, есть и у Национального банка Республики Беларусь. На примере потребления сервиса Web-службы этого банка создадим Windows-приложение (настольное приложение), получающее справочную информацию о текущих курсах валют в онлайновом режиме.</p>
<p>Для решения этой задачи запустим <b>VB2010</b>, выберем шаблон <b>Windows Forms Application</b>. В конструкторе формы добавим кнопку и элемент управления <b>DataGridView</b>. Мы намереваемся на сетку данных DataGridView вывести данные с курсами валют. Элемент управления <b>DataGridView</b> в Windows-приложении играет ту же роль, что и <b>GridView</b> в Web-приложении. Методы этих классов похожи, хотя есть и отличия.</p>
<p><span id="more-343"></span>Следующим этапом разработки клиентского приложения является добавление ссылки на удаленный класс искомой Web-службы. Для этого выберем в пункте меню <b>Project</b> команду <b>Add Service Reference</b>, это приведет к появлению диалогового окна Add Service Reference. В этом окне щелкнем кнопку Advanced, а затем кнопку Add Web Reference. В появившемся диалоговом окне <b>Add Web Reference</b> в поле <b>URL</b> введем адрес Web-службы: <b>http://www.nbrb.by/Services/ExRates.asmx</b> и нажмем кнопку <b>Go</b>. В окне ниже увидим список доступных методов данного сервиса, после этого щелкнем на кнопке <b>Add Reference</b>. При этом в окне <b>Solution Explorer</b> появится ссылка на удаленный класс: <b>by.nbrb.www</b>. Теперь мы можем использовать эту ссылку в программном коде (листинг 101).</p>
<p><b>Листинг 101. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Клиентское Windows-приложение, потребляющее Web-сервис центрального</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; банка Белоруссии для получения ежедневных курсов валют. На выходе</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; приложения получаем таблицу курсов валют.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Partial</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Public</span> <span style="color:blue">Class</span><span style="color:#2B91AF">_Default</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span><span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем клиентское приложение Web-сервиса: http://www.nbrb.by/Services/ExRates.asmx</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создаем экземпляр удаленного класса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Валюта<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> by.nbrb.www.<span style="color:#2B91AF">ExRates</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; А этот сайт я нашел на сайте:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; http://ivbeg.bestpersons.ru/feed/post3279396/</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Здесь есть ссылки на другие русско-язычные сервисы</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Дата<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">Date</span> = Now</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = </span><span style="font-size: 9.5pt; font-family: Consolas">Валюта</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.ExRatesDaily(</span><span style="font-size: 9.5pt; font-family: Consolas">Дата</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>В программном коде выполняем обычные уже в данной главе действия. При обработке события &quot;щелчок на кнопке&quot; <b>Button1</b> создаем экземпляр удаленного класса, а затем обращаемся к методу класса <b>ExRates</b>, подавая на вход метода текущую дату. Этот метод возвращает таблицу курсов валют в формате <b>DataSet</b>. Эту таблицу, называемую <b>DailyExRatesOnDate</b>, указываем в качестве источника данных <b>DataSource</b> ДЛЯ сетки данных <b>DataGridView1</b>, которую мы используем для визуализации таблицы курсов валют.</p>
<p><strong><a href="/dwn.php?file=primer101.rar" target="_top" title="Скачать исходник к Примеру 101. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением">Скачать исходник к Примеру 101. Получение данных от Web-службы Национального банка Республики Беларусь Windows-приложением</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer101/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 100. Получение данных от Web-службы Центрального банка РФ Web-приложением</title>
		<link>http://vbprog.ru/primer100/</link>
		<comments>http://vbprog.ru/primer100/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 06:26:34 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=341</guid>
		<description><![CDATA[Центральный банк Российской Федерации (ЦБРФ) предоставляет Web-службу для получения ежедневных экономических данных (курсы валют, учетные цены драгоценных металлов и пр.). Сервис данной Web-службы можно получать по адресу: http://www.cbr.ru/scripts/Root.asp?Prtid=DWS. Поставим задачу создания клиентского Web-приложения для получения ежедневных курсов валют. Такой сервис предлагается на сайте Центрального банка Российской Федерации по адресу: http://www.cbr.ru /DailylnfoWebServ/Dailylnfo.asmx. Мы воспользуемся функцией (методом) [...]]]></description>
			<content:encoded><![CDATA[<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p>Центральный банк Российской Федерации (ЦБРФ) предоставляет Web-службу для получения ежедневных экономических данных (курсы валют, учетные цены драгоценных металлов и пр.). Сервис данной Web-службы можно получать по адресу: <b>http://www.cbr.ru/scripts/Root.asp?Prtid=DWS</b>. Поставим задачу создания клиентского Web-приложения для получения ежедневных курсов валют. Такой сервис предлагается на сайте Центрального банка Российской Федерации по адресу: <b>http://www.cbr.ru /DailylnfoWebServ/Dailylnfo.asmx</b>.</p>
<p><span id="more-341"></span>Мы воспользуемся функцией (методом) <b>GetSeldCursOnDate</b> данной Web-службы, на вход которой подают дату, а на выходе функции получают ежедневные курсы валют в виде <b>DataSet</b> (табличные данные).</p>
<p>Для решения этой задачи запустим VB2010, выберем шаблон <b>Empty ASP.NET Web Application</b>. К текущему проекту добавим Web-форму. Для этого в пункте меню<b>Project</b> выберем команду <b>Add New Item </b>и в появившемся окне дважды щелкнем шаблон <b>Web Form</b>. В конструкторе формы перетащим в форму кнопку и элемент сетки данных <b>GridView</b>, поскольку намереваемся с его помощью отображать табличные данные типа <b>DataSet</b>. Далее в пункте меню <b>Project</b> выберем команду <b>Add Web Reference</b> и в появившемся окне в поле <b>URL</b> введем адрес Web-сервиса: <b>http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx</b></p>
<p>При этом станет доступной кнопка <b>Add Reference</b>. Щелкнем на этой кнопке, после этого в окне <b>Solution Explorer</b> появится новая папка <b>Web References</b> со ссылкой на удаленный класс <b>ru.cbr.www</b>. Теперь в нашем программном коде мы сможем воспользоваться этим удаленным классом (листинг 100).</p>
<p><b>Листинг 100. Получение данных от Web-службы Центрального банка РФ Web-приложением<br /></b></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Клиентское Web-приложение, потребляющее Web-сервис центрального</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; банка России для получения ежедневных курсов валют. На выходе </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; приложения получаем таблицу курсов валют.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем клиентское приложение Web-сервиса: http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создаем экземпляр удаленного класса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Валюта<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> ru.cbr.www.<span style="color:#2B91AF">DailyInfo</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span style="font-size: 9.5pt; font-family: Consolas"> Дата <span style="color:blue">As</span> <span style="color:blue">Date</span> = Now</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Получение ежедневных курсов валют:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">GridView1.DataSource = </span><span style="font-size: 9.5pt; font-family: Consolas">Валюта</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.GetSeldCursOnDate(</span><span style="font-size: 9.5pt; font-family: Consolas">Дата</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как и при создании предыдущих клиентов Web-служб, при обработке события &quot;щелчок на кнопке&quot; создаем экземпляр удаленного класса, в данном случае мы назвали его валюта. На вход его метода <b>GetSeldCursOnDate</b> подаем текущую дату. Этот метод возвращает данные типа DataSet, которые мы указываем в качестве источника данных <b>DataSource</b> для элемента управления &quot;сетка данных&quot; <b>GridView1</b>. В заключение отмечу, что подобную Web-службу имеют также банки других стран, например, Web-служба Национального банка Республики Беларусь расположена по адресу: <b>http://www.nbrb.by/Services/ ExRates.asmx</b>.</p>
<p><strong><a href="/dwn.php?file=primer100.rar" target="_top" title="Скачать исходник к Примеру 100. Получение данных от Web-службы Центрального банка РФ Web-приложением">Скачать исходник к Примеру 100. Получение данных от Web-службы Центрального банка РФ Web-приложением</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer100/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 99. Клиентское Web-приложение, потребляющее сервис Web-службы Морфер</title>
		<link>http://vbprog.ru/primer99/</link>
		<comments>http://vbprog.ru/primer99/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 10:48:05 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=339</guid>
		<description><![CDATA[Создадим клиентское Web-приложение не для Web-службы, написанной нами, а для удаленного Web-сервиса. Различных готовых Web-служб много, их можно посмотреть, протестировать на сайтах http://uddi.xml.org/, http://www.xmethods.org/,http://www.webservicelist.com/ и др. Выберем одну из русскоязычных Web-служб, а именно Web-службу склонения существительных &#34;Морфер&#34;, ее адрес в Сети следующий: http://www.morpher.ru/ WebServices/Morpher.asmx. Эта Web-служба предназначена для автоматизированной обработки текстов на русском языке. В [...]]]></description>
			<content:encoded><![CDATA[<p>Создадим клиентское Web-приложение не для Web-службы, написанной нами, а для удаленного Web-сервиса. Различных готовых Web-служб много, их можно посмотреть, протестировать на сайтах <b>http://uddi.xml.org/</b>, <b>http://www.xmethods.org/</b>,<b>http://www.webservicelist.com/</b> и др. Выберем одну из русскоязычных Web-служб, а именно Web-службу склонения существительных &quot;Морфер&quot;, ее адрес в Сети следующий: <b>http://www.morpher.ru/ WebServices/Morpher.asmx</b>.</p>
<p>Эта Web-служба предназначена для автоматизированной обработки текстов на русском языке. В частности, метод <b>GetAll5</b> Web-службы обеспечивает склонение слов и словосочетаний на русском языке. На вход функции (метода) <b>GetAll5</b> данной Web-службы подаем слово в именительном падеже, функция возвращает массив строк, в которых записано это слово в различных пяти падежах: родительном, дательном, винительном, творительном и предложном.</p>
<p><span id="more-339"></span>Для испытания этой Web-службы запустим <b>VB2010</b>, выберем шаблон <b>Empty ASP.NET Web Application</b>. К текущему проекту добавим <b>Web-форму</b>. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем шаблон <b>Web Form</b>. В конструкторе формы из панели элементов <b>Toolbox</b> перенесем текстовое поле <b>TextBox</b> и кнопку<b>Button</b>. Далее, чтобы добавить ссылку на удаленный класс, в пункте меню <b>Project </b>выберем команду <b>Add Web Reference</b>, в поле <b>URL</b> введем ссылку на Web-службу: <b>http://www.morpher.ru/WebServices/Morpher.asmx</b>.</p>
<p>При этом кнопка <b>Add Reference</b> станет доступной, а после щелчка на ней в окне <b>Solution Explorer</b> появится ссылка на удаленный класс: <b>ru.morpher.www</b>. Теперь мы можем использовать эту ссылку в нашем программном коде (листинг 99).</p>
<p><b>Листинг 99. Клиентское Web-приложение, потребляющее сервис</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Клиентское Web-приложение, потребляющее Web-сервис склонения </span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; существительных &quot;Морфер&quot;. На вход сервиса подаем слово на русском</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; языке, на выходе получаем это слово в различных пяти падежах</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Просклонять</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.TextMode = <span style="color:#2B91AF">TextBoxMode</span>.MultiLine</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем клиентское приложение Web-сервиса: http://www.morpher.ru/WebServices/Morpher.asmx</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создаем экземпляр удаленного класса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Склонение<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> ru.morpher.www.<span style="color:#2B91AF">Morpher</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span style="font-size: 9.5pt; font-family: Consolas"> Падежи() <span style="color:blue">As</span> <span style="color:blue">String</span> = Склонение.GetAll5(<span style="color:#A31515">&quot;Зиборов Виктор Владимирович&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Падежи(4) =<span style="color:#A31515">&quot;О &quot;</span> + Падежи(4)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Перевод каретки vbCrLf в конце каждого склонения:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">For</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Each</span> C <span style="color:blue">As</span><span style="color:blue">String</span> <span style="color:blue">In</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Падежи</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.Text = TextBox1.Text &amp; C &amp; vbCrLf</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Next</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из текста программы, при обработке события &quot;щелчок на кнопке&quot; Просклонять создаем экземпляр удаленного класса склонение и далее используем метод <b>GetAll5</b> класса для получения возможных склонений. Метод <b>GetAll5</b> возвращает массив строк с пятью возможными склонениями. Цикл <b>For Each</b> обеспечивает символ конца строки <b>vbCrLf</b> в конце каждой строки текстового поля.</p>
<p><strong><a href="/dwn.php?file=primer99.rar" target="_top" title="Скачать исходник к Примеру 99. Клиентское Web-приложение, потребляющее сервис Web-службы &quot;Морфер&quot;">Скачать исходник к Примеру 99. Клиентское Web-приложение, потребляющее сервис Web-службы &quot;Морфер&quot;</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer99/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 98. Клиентское приложение, потребляющее сервис Web-службы Торговая рекомендация на рынке Forex</title>
		<link>http://vbprog.ru/primer98/</link>
		<comments>http://vbprog.ru/primer98/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 09:48:41 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=337</guid>
		<description><![CDATA[Теперь напишем клиентское Windows-приложение, использующее Web-службу, созданную нами в предыдущем разделе. Для этого запустим VB2010, выберем шаблон Windows Forms Application. Из панели элементов Toolbox перенесем в форму метку Label, куда будем помещать строку торговой рекомендации, полученную от Web-службы &#34;Торговая стратегия на рынке Forex&#34;. Далее необходимо в проекте создать Web-ссылку на удаленный класс Web-службы. Для этого [...]]]></description>
			<content:encoded><![CDATA[<p>Теперь напишем клиентское Windows-приложение, использующее Web-службу, созданную нами в предыдущем разделе. Для этого запустим <b>VB2010</b>, выберем шаблон <b>Windows Forms Application</b>. Из панели элементов <b>Toolbox</b> перенесем в форму метку <b>Label</b>, куда будем помещать строку торговой рекомендации, полученную от Web-службы &quot;Торговая стратегия на рынке Forex&quot;.</p>
<p>Далее необходимо в проекте создать Web-ссылку на удаленный класс Web-службы. Для этого выберем в пункте меню <b>Project</b> команду <b>Add Service Reference</b>, это приведет к появлению диалогового окна <b>Add Service Reference</b>. В этом окне щелкнем кнопку <b>Advanced</b>, а затем в следующем окне кнопку <b>Add Web Reference</b>.</p>
<p><span id="more-337"></span>Теперь в поле <b>URL</b> пишем виртуальный адрес ASMX-файла используемой Web-службы. Этот адрес мы можем получить, запустив нашу Web-службу из прошлого раздела, а затем скопировав в буфер обмена его URL-адрес. На вкладке программного кода набираем простейшую программу (листинг 98).</p>
<p><b>Листинг 98. Клиентское приложение, потребляющее сервис Web-службы &quot;Торговая рекомендация на рынке Forex&quot;</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Клиентское Windows-приложение, потребляющее Web-сервис </span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">примера</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> 98 WebS_Forex.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">Form1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Form1_Load(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> System.<span style="color:#2B91AF">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> <span style="color:blue">MyBase</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем клиентское приложение Web-сервиса: http://localhost:1042/Service1.asmx</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создаем экземпляр удаленного класса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> Forex <span style="color:blue">As</span> <span style="color:blue">New</span> localhost.<span style="color:#2B91AF">Service1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Me</span>.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Рынок</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> Forex&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label1.Text = Forex.Sovet()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, при обработке события загрузки формы создаем экземпляр удаленного класса Web-службы, затем обращаемся к его методу <b>Sovet</b> Скопируем получаемую строку в метку <b>Label1</b>.</p>
<p><strong><a href="/dwn.php?file=primer98.rar" target="_top" title="Скачать исходник к Примеру 98. Клиентское приложение, потребляющее сервис Web-службы &quot;Торговая рекомендация на рынке Forex&quot;">Скачать исходник к Примеру 98. Клиентское приложение, потребляющее сервис Web-службы &quot;Торговая рекомендация на рынке Forex&quot;</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 97. Web-служба Торговая рекомендация на рынке Forex</title>
		<link>http://vbprog.ru/primer97/</link>
		<comments>http://vbprog.ru/primer97/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 08:34:12 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=335</guid>
		<description><![CDATA[Создадим Web-службу, обеспечивающую торговой рекомендацией участников международного валютного рынка Forex. Как известно, любой желающий через Интернет, используя соответствующее программное обеспечение, может подключиться к этому рынку и совершить либо покупку какой-либо валютной пары (например, евродоллар, EURUSD), либо ее продажу. И в зависимости от правильно выбранного направления движения цены либо получить прибыль, либо убыток. Существует множество сайтов, [...]]]></description>
			<content:encoded><![CDATA[<p>Создадим Web-службу, обеспечивающую торговой рекомендацией участников международного валютного рынка Forex. Как известно, любой желающий через Интернет, используя соответствующее программное обеспечение, может подключиться к этому рынку и совершить либо покупку какой-либо валютной пары (например, евродоллар, EURUSD), либо ее продажу. И в зависимости от правильно выбранного направления движения цены либо получить прибыль, либо убыток. Существует множество сайтов, где выкладываются рекомендуемые торговые стратегии работы на рынке Forex на текущую европейскую или американскую сессию. Например, мы доверяем какому-нибудь из таких сайтов, скажем, сайту <b>http://www.forex-rdc.ru/subscribers.php?action=prognoz</b>, и решаем руководствоваться его рекомендациями. Кроме того, мы создаем Web-службу, которая с помощью синтаксического разбора указанной выше Web-страницы будет извлекать торговую стратегию, рекомендованную данным сайтом на текущий день. Поскольку в нашей книге мы должны привести очень краткий и выразительный пример, то ограничимся торговой рекомендацией только для одной валютной пары EURUSD.</p>
<p><span id="more-335"></span>Для решения этой задачи запускаем <b>VB2010</b>, выбираем шаблон <b>ASP.NET Web Service Application</b>, выбираем папку и имя, например, <b>WebS_Forex</b>. Содержимое файла программной поддержки приведено в листинге 97.</p>
<p><b>Листинг 97. Web-служба &quot;Торговая рекомендации на рынке Forex&quot;</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Web-сервис, который с помощью синтаксического разбора Web-страницы:</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; http://www.forex-rdc.ru/subscribers.php?action=prognoz</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; извлекает торговую рекомендацию на рынке Forex для валютной пары</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; EURUSD, предлагаемую данным сайтом на текущий день, и выводит ее</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; потребителю сервиса в виде строки.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.Web.Services</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.Web.Services.Protocols</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.ComponentModel</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; To allow this Web Service to be called from script,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; using ASP.NET AJAX, uncomment the following line.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; &lt;System.Web.Script.Services.ScriptService()&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&lt;System.Web.Services.<span style="color:#2B91AF">WebService</span>(Namespace:=<span style="color:#A31515">&quot;http://tempuri.org/&quot;</span>)&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&lt;System.Web.Services.<span style="color:#2B91AF">WebServiceBinding</span>(ConformsTo:=<span style="color:#2B91AF">WsiProfiles</span>.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BasicProfile1_1)&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&lt;<span style="color:#2B91AF">ToolboxItem</span>(<span style="color:blue">False</span>)&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">Service1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.Services.<span style="color:#2B91AF">WebService</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; &lt;<span style="color:#2B91AF">WebMethod</span>()&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Public</span> <span style="color:blue">Function</span> Sovet() <span style="color:blue">As</span> <span style="color:blue">String</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Создаем объект для чтения</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Web-</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">страницы</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">КЛИЕНТ<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> System.Net.<span style="color:#2B91AF">WebClient</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Чтобы русские буквы читались нормально,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; объявляем объект Кодировка:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Кодировка <span style="color:blue">As</span> System.Text.<span style="color:#2B91AF">Encoding</span> = System.Text.<span style="color:#2B91AF">Encoding</span>.GetEncoding(1251)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ПОТОК<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"> IO.<span style="color:#2B91AF">Stream</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Try</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:green">&#8216; Попытка открытия Web-ресурса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ПОТОК = КЛИЕНТ.OpenRead(<span style="color:#A31515">&quot;http://www.forex-rdc.ru/subscribers.php?action=prognoz&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Catch</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> ex <span style="color:blue">As</span> <span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> = <span style="color:blue">String</span>.Format(</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Ошибка открытия</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> www.forex-rdc.ru{0}{1}&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">,<span style="color:#2B91AF">ControlChars</span>.NewLine, ex)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Return</span> </span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;<span style="color:green">&#8216;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Чтение</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> HTML-</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">разметки</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Web-</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">страницы</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span style="font-size: 9.5pt; font-family: Consolas"> Читатель <span style="color:blue">As</span> <span style="color:blue">New</span> IO.<span style="color:#2B91AF">StreamReader</span>(ПОТОК, Кодировка)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Копируем HTML-разметку в строковую переменную:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; СТРОКА = Читатель.ReadToEnd</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Ищем в разметке страницы фрагмент с указанной строкой:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> i <span style="color:blue">As</span><span style="color:blue">Integer</span> = СТРОКА.IndexOf(<span style="color:#A31515">&quot;Торговая стратегия:&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Ищем стратегию только для EURUSD:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; СТРОКА = СТРОКА.Substring(i, 120)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Удаляем HTML-разметку:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">i = </span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.IndexOf(<span style="color:#A31515">&quot;&lt;/p&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> = </span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Remove(i)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА = СТРОКА.Replace(<span style="color:#A31515">&quot;&lt;/b&gt;&quot;</span>,<span style="color:#A31515">&quot;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Вставляем текущую дату:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; СТРОКА = СТРОКА.Replace(<span style="color:#A31515">&quot;стратегия:&quot;</span>,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;стратегия для EURUSD на &quot;</span> + Format(Now,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;d MMMM, yyyy&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">) + <span style="color:#A31515">&quot;:&quot;</span> + <span style="color:#2B91AF">ControlChars</span>.NewLine)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">ПОТОК</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Close()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Return</span> </span><span style="font-size: 9.5pt; font-family: Consolas">СТРОКА</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Function</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, данная Web-служба содержит в себе один метод <b>Sovet()</b>, который не имеет входных параметров. В начале метода создаем экземпляр класса <b>WebClient</b> для чтения и последующего синтаксического разбора Web-страницы. Вообще говоря, Web-страница может быть записана на машинном носителе в какой-либо кодировке. Чаще всего это Unicode (UTF-8), русскоязычные сайты часто имеют кодировку Windows 1251. Чтобы выяснить, в какой кодировке записана Web-страница, следует в браузере в контекстном меню навести указатель мыши на пункт меню <b>Кодировка</b>. При чтении Web-страницы создаем объект поток, используя URL-адрес страницы, и объект кодировка для корректного отображения кириллицы. После копирования HTML-разметки страницы в строковую переменную ищем в разметке страницы раздел с торговой стратегией для EURUSD с помощью строковых операций.</p>
<p><center><img src='/images/primer97a.jpg'></center><br /><center><b>Рис. 97.1. Отображение ASMX-файла в браузере</b></center></p>
<p>Теперь запустим созданную Web-службу, нажав клавишу <b>&lt;F5&gt;</b>. Если формальных ошибок нет, мы получим отображение ASMX-файла в браузере (рис. 12.9).</p>
<p>Щелкнув в этом окне на изображении единственного метода данной Web-службы Sovet, мы попадаем на другую страницу, где получаем возможность его тестировать. Для этого щелкнем на кнопке <b>Invoke</b>. В итоге тестирования получим в браузере результат работы данного метода Web-службы в формате XML-сообщения (рис. 12.10).</p>
<p><center><img src='/images/primer97b.jpg'></center><br /><center><b>Рис. 97.2. XML-сообщение, как результат работы Web-сервиса</b></center><br /><strong><a href="/dwn.php?file=primer97.rar" target="_top" title="Скачать исходник к Примеру 97. Web-служба &quot;Торговая рекомендация на рынке Forex&quot;">Скачать исходник к Примеру 97. Web-служба &quot;Торговая рекомендация на рынке Forex&quot;</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer97/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 96. Создание Windows-приложения, потребителя сервиса Web-службы</title>
		<link>http://vbprog.ru/primer96/</link>
		<comments>http://vbprog.ru/primer96/#comments</comments>
		<pubDate>Sun, 13 Nov 2011 07:26:36 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=333</guid>
		<description><![CDATA[Теперь напишем Windows-приложение (т. е. создадим ЕХЕ-файл), который будет обращаться к Web-службе, написанной в предыдущем разделе. Такое приложение можно называть клиентским. Для этого запустим VB2010, выберем шаблон Windows Forms Application (можно даже Console Application). Из панели Toolbox перенесем в форму кнопку, и вся работа с удаленной Web-службой будет происходить при обработке события &#34;щелчок на кнопке&#34; [...]]]></description>
			<content:encoded><![CDATA[<p>Теперь напишем Windows-приложение (т. е. создадим ЕХЕ-файл), который будет обращаться к Web-службе, написанной в предыдущем разделе. Такое приложение можно называть клиентским. Для этого запустим <b>VB2010</b>, выберем шаблон <b>Windows Forms Application</b> (можно даже <b>Console Application</b>). Из панели <b>Toolbox</b> перенесем в форму кнопку, и вся работа с удаленной Web-службой будет происходить при обработке события &quot;щелчок на кнопке&quot; <b>Пуск</b>.</p>
<p>Чтобы сделать Windows-приложение потребителем сервиса Web-службы, необходимо в его проекте создать Web-ссылку на удаленный класс. Для этого выберем в пункте меню <b>Project</b> команду <b>Add Service Reference</b>, это приведет к появлению диалогового окна <b>Add Service Reference</b>. В этом окне щелкнем кнопку <b>Advanced</b>, а затем в следующем окне кнопку <b>Add Web Reference</b>.</p>
<p><span id="more-333"></span>Поскольку мы отлаживаем и Web-службу, и его клиентское приложение на одном локальном компьютере, в поле <b>URL</b> пишем виртуальный адрес <b>ASMX-файла</b>. Этот адрес мы можем получить, запустив нашу Web-службу из предыдущего раздела, а затем скопировав в буфер обмена его URL-адрес. Для локального компьютера, на котором автор отлаживал данный пример, URL-адрес был таким: <b>http://localhost:1611/Service1.asmx</b>.</p>
<p>Затем щелкаем на кнопке <b>Go</b> и тем самым получаем доступ к кнопке <b>Add Reference</b>, после щелчка на которой в окне <b>Solution Explorer</b> добавится значок ссылки на класс <b>localhost</b>, обеспечивающий доступ к <b>Web-службе</b> (рис. 96).</p>
<p><center><img src='/images/primer96a.jpg'></center><br /><center><b>Рис. 96.1. Добавление ссылки на класс localhost</b></center><br />Если посмотреть на этот класс через браузер объектов <b>View in Object Browser</b> (используя контекстное меню в окне <b>Solution Explorer</b>), то можно увидеть все свойства, методы и события, которые содержатся в этом классе. Теперь, когда в наш проект добавлена ссылка на удаленный класс, мы можем вызывать методы этого класса в нашей программе (листинг 12.4).</p>
<p><b>Листинг 96. Windows-приложение, потребляющее сервис Web-службы</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Клиентское Windows-приложение, потребляющее Web-сервис </span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">примера</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> 87 Web_S_my.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">Form1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Form1_Load(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> System.<span style="color:#2B91AF">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> <span style="color:blue">MyBase</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Пуск</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> System.<span style="color:#2B91AF">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Чтобы добавить Web-сервис к обычному Windows Appplication: Project &#8212; </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; &#8212; Add Service Reference &#8212; Advanced &#8212; Add Web Reference &#8212; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">в </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; поле URL пишем: http://localhost:1611/Service1.asmx</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создаем экземпляр удаленного объекта:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Удаленный<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> localhost.<span style="color:#2B91AF">Service1</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Sum <span style="color:blue">As</span><span style="color:blue">String</span> = </span><span style="font-size: 9.5pt; font-family: Consolas">Удаленный</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.</span><span style="font-size: 9.5pt; font-family: Consolas">Сумма</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">(<span style="color:#A31515">&quot;23.5&quot;</span>,<span style="color:#A31515">&quot;11,4&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox(Sum)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, при обработке события &quot;щелчок мышью&quot; на кнопке<b>Пуск</b> создаем экземпляр удаленного класса и обращаемся к его функции (методу) сумма. При этом при вводе чисел специально одно из них пишем через десятичную точку, а другое — через запятую для тестирования возможности ввода чисел обоими способами.</p>
<p>Результат работы программы представлен на рис. 96.2.</p>
<p><center><img src='/images/primer96b.jpg'></center><br /><center><b>Рис. 96.2. Обращение Windows-приложения к Web-службе</b></center><br /><strong><a href="/dwn.php?file=primer96.rar" target="_top" title="Скачать исходник к Примеру 96. Создание Windows-приложения, потребителя сервиса Web-службы">Скачать исходник к Примеру 96. Создание Windows-приложения, потребителя сервиса Web-службы</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer96/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 95. Создание простейшей Web-службы</title>
		<link>http://vbprog.ru/primer95/</link>
		<comments>http://vbprog.ru/primer95/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 12:14:10 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=331</guid>
		<description><![CDATA[А теперь, когда мы убедились, что создать клиентское приложение, потребляющее сервис Web-службы, не сложно, поставим задачу создать самую простую Web-службу, чтобы убедиться, что это тоже простая задача. Автор понимает, что сейчас наступил очень деликатный момент, что задача, реализующаяся в данной Web-службе, должна быть максимально простой. Например, пользователю предлагается ввести два числа, а Web-служба берет на [...]]]></description>
			<content:encoded><![CDATA[<p>А теперь, когда мы убедились, что создать клиентское приложение, потребляющее сервис Web-службы, не сложно, поставим задачу создать самую простую Web-службу, чтобы убедиться, что это тоже простая задача. Автор понимает, что сейчас наступил очень деликатный момент, что задача, реализующаяся в данной Web-службе, должна быть максимально простой. Например, пользователю предлагается ввести два числа, а Web-служба берет на себя функцию сложения этих двух чисел и вывода (возврата) суммы. При этом необходимо произвести диагностику вводимых данных. От такой Web-службы нет особенной пользы, но на этой маленькой задачке нам будет удобно продемонстрировать все возможности. Здесь, так же как и при отладке активных Web-страниц из предыдущей главы, при отладке данной Web-службы в качестве удаленного серверного компьютера и клиентского компьютера мы будем использовать один ваш локальный компьютер.</p>
<p><span id="more-331"></span>Для решения этой задачи запускаем VB2010, выбираем шаблон <b>ASP.NET Web Service Application</b>, выбираем папку и имя. Сразу после этого попадаем на вкладку готовой Web-службы <b>HelloWorld</b>, и уже ее можно тестировать. Однако <b>HelloWorld</b> — это другая задача, разработчики <b>Visual Studio 2010</b> включили ее для облегчения освоения данной технологии. Нас интересует наша задача, поэтому изменим файл программной поддержки, как показано в листинге 95.</p>
<p><b>Листинг 95. Простейшая Web-служба</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.Web.Services</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.Web.Services.Protocols</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.ComponentModel</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; To allow this Web Service to be called from script,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; using ASP.NET AJAX, uncomment the following line.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; &lt;System.Web.Script.Services.ScriptService()&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&lt;System.Web.Services.<span style="color:#2B91AF">WebService</span>(Namespace:=<span style="color:#A31515">&quot;http://tempuri.org/&quot;</span>)&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&lt;System.Web.Services.<span style="color:#2B91AF">WebServiceBinding</span>(ConformsTo:=<span style="color:#2B91AF">WsiProfiles</span>.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BasicProfile1_1)&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&lt;<span style="color:#2B91AF">ToolboxItem</span>(<span style="color:blue">False</span>)&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">Service1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.Services.<span style="color:#2B91AF">WebService</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; &lt;<span style="color:#2B91AF">WebMethod</span>()&gt; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Public</span> <span style="color:blue">Function</span></span><span style="font-size: 9.5pt; font-family: Consolas">Сумма</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">(<span style="color:blue">ByVal</span></span><span style="font-size: 9.5pt; font-family: Consolas">Число</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">1<span style="color:blue">As</span> <span style="color:blue">String</span>,<span style="color:blue">ByVal</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Число</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">2<span style="color:blue">As</span> <span style="color:blue">String</span>)<span style="color:blue">As</span> <span style="color:blue">String</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Входные параметры объявляем типа String, чтобы принимать</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; от пользователя любые символы, их анализировать, и при</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; &quot;плохом вводе&quot; сообщать по-русски.</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Пользователь может использовать при вводе данных как</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; десятичную точку, так и запятую. Если введет точку, то</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; заменим на запятую:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Число1 = Число1.Replace(<span style="color:#A31515">&quot;.&quot;</span>,<span style="color:#A31515">&quot;,&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Число2 = Число2.Replace(<span style="color:#A31515">&quot;.&quot;</span>,<span style="color:#A31515">&quot;,&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> X, Y, Z <span style="color:blue">As</span> <span style="color:blue">Decimal</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">If</span> IsNumeric(</span><span style="font-size: 9.5pt; font-family: Consolas">Число</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">1) = <span style="color:blue">True</span> <span style="color:blue">Then</span> X =<span style="color:blue">CType</span>(</span><span style="font-size: 9.5pt; font-family: Consolas">Число</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">1,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Decimal</span><span style="font-size: 9.5pt; font-family: Consolas">)<span style="color:blue">Else</span> <span style="color:blue">Return</span><span style="color:#A31515">&quot;В первом поле должно быть число&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">If</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> IsNumeric(</span><span style="font-size: 9.5pt; font-family: Consolas">Число</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">2) = <span style="color:blue">True</span> <span style="color:blue">Then</span> Y =<span style="color:blue">CType</span>(</span><span style="font-size: 9.5pt; font-family: Consolas">Число</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">2,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Decimal</span><span style="font-size: 9.5pt; font-family: Consolas">)<span style="color:blue">Else</span> <span style="color:blue">Return</span><span style="color:#A31515">&quot;Во втором поле должно быть число&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Z = X + Y</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Return</span> <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Сумма</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> = &quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> &amp; Z.ToString</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Function</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из текста программы, мы не программировали никакой пользовательский интерфейс. У нас здесь нет ни формы, ни кнопок, ни текстовых полей. Уже отсюда понятно, что <b>Web-служба</b> — это удаленный класс, к которому можно подключиться через Интернет из своего, например, Windows-или Web-приложения. На вход функции Сумма пользователь <b>Web-службы</b> подает два числа, которые принимаются функцией как две строки. Если при этом пользователь использовал десятичную точку, то функция <b>Replace</b> меняет эту точку на запятую. Функция <b>IsNumeric</b> проверяет, числовые ли символы содержатся во введенных строках, и если это так, то с помощью функции <b>CType</b> происходит преобразование строковых переменных в переменные типа <b>Decimal</b>.</p>
<p>Теперь можем протестировать данную Web-службу, для этого нажмем клавишу <b>&lt;F5&gt;</b>. При этом <b>Web-браузер</b> откроет <b>ASMX-файл</b>. Здесь мы увидим единственный метод этой <b>Web-службы</b> — <b>Сумма</b>. Щелчок указателем мыши на этой гиперссылке обеспечит возможность тестирования нашей <b>Web-службы</b>.</p>
<p>Мы можем вводить в данные поля нечисловые символы, числа с десятичной точкой или запятой и тем самым тестировать поведение нашей программы. Заметьте, что мы не программировали эти поля, система сама предоставила нам такую возможность для тестирования программируемой нами Web-службы.</p>
<p><strong><a href="/dwn.php?file=primer95.rar" target="_top" title="Скачать исходник к Примеру 95. Создание простейшей Web-службы">Скачать исходник к Примеру 95. Создание простейшей Web-службы</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer95/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 94. Клиентское приложение, потребляющее сервис Web-службы Прогноз погоды</title>
		<link>http://vbprog.ru/primer94/</link>
		<comments>http://vbprog.ru/primer94/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 11:28:34 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=329</guid>
		<description><![CDATA[Создание Web-служб и их клиентов О Web-службах Web-служба (от англ. Web service) — это программная система (более конкретно— откомпилированная библиотека динамической компоновки, т.е. файл формата DLL в папке bin приложения), расположенная на удаленном сервере (компьютере), к которой можно обращаться (потреблять сервис Web-службы) из своего клиентского компьютера. При этом возможности удаленной Web-службы будут реализованы в вашем [...]]]></description>
			<content:encoded><![CDATA[<p><b>Создание Web-служб и их клиентов</b></p>
<p><b>О Web-службах</b></p>
<p><b>Web-служба</b> (от англ. Web service) — это программная система (более конкретно— откомпилированная библиотека динамической компоновки, т.е. файл формата <b>DLL</b> в папке <b>bin</b> приложения), расположенная на удаленном сервере (компьютере), к которой можно обращаться (потреблять сервис Web-службы) из своего клиентского компьютера. При этом возможности удаленной Web-службы будут реализованы в вашем Windows- или Web-приложении, а пользователь при достаточной скорости трафика может даже не заметить обращения вашей программы к удаленному серверу. На удаленном компьютере могут находиться и программный код, и данные. Для передачи по Интернету вызовов методов Web-служб и результатов их выполнения используется протокол <b>SOAP (Simple Object Access Protocol)</b>. Протокол <b>SOAP</b> применяет формат сообщений, основанный на <b>XML</b>. Web-служба и протокол <b>SOAP</b> не зависят от конкретной платформы. Поэтому различные разработчики могут использовать Web-службы друг друга, не беспокоясь о совместимости операционных систем, технологий или языков программирования. Другое название <b>Web-службы</b> — <b>Web-сервис</b>.</p>
<p><span id="more-329"></span>Web-службы решают очень разные задачи. Это прогноз погоды, гороскоп, переводчик слов на различные иностранные языки, курсы валют, котировки ценных бумаг, проверка на корректность введенного пользователем почтового адреса, реестр улиц города, статистика правонарушений, информация о наличии свободных мест на авиарейс или в кинотеатр и т. д. Причем любой из подобных сервисов вы можете легко встроить в свое <b>Windows-</b> или <b>Web-приложение</b> путем создания клиентского приложения, потребляющего такой уже существующий сервис <b>Web-службы</b>.</p>
<p>Для поиска Web-служб в Интернете существует несколько сайтов, в которых Web-службы регистрируются их провайдерами для того, чтобы их могли найти заинтересованные в них разработчики. Таким сайтом является, например: <b>http://uddi.xml.org/uddi-org</b>. Регистрация в каталоге UDDI бесплатна. Здесь сегодня можно найти несколько десятков более или менее полезных Web-служб. В Сети можно найти и другие списки общедоступных Web-служб различных производителей, например: <b>http://www.xmethods.org/ve2/index.po</b>. Список русскоязычных Web-служб можно найти по адресу: <b>http://ivbeg.bestpersons.ru/feed/post3279396/</b>.</p>
<p>Упрощенно говоря, Web-служба в среде .NET состоит из двух компонентов: ASMX-файла и файла программной поддержки <b>ASMX.vb</b>. ASMX-файл содержит в себе информацию о методах Web-службы, о способах их тестирования, это можно посмотреть в любом Web-браузере. Файл программной поддержки написан на языке <b>Visual Basic</b>, может быть скомпилирован для получения библиотеки DLL, именно он обеспечивает реализацию методов Web-службы.</p>
<p>Здесь перечислены пять методов Web-службы по операциям с текущими курсами валют. В создаваемом разработчиком клиентском приложении необходимо сделать ссылку на данный Web-cepвep и таким образом включить в текущий проект удаленный класс. А затем в своем программном коде объявить создание нового экземпляра этого класса, и теперь можно уже обращаться ко всем методам класса.</p>
<p><b><font size="4">Пример 94. Клиентское приложение, потребляющее сервис Web-службы &quot;Прогноз погоды&quot;</font></b></p>
<p>В данном разделе создадим клиентское Web-приложение, потребляющее сервис Web-службы сайта <b>http://www.webservicex.net/globalweather.asmx</b>, и продемонстрируем тем самым, что это — просто! Данная Web-служба возвращает прогноз погоды в городе, который пользователь задает в запросе к службе. Эта Web-служба поддерживает два метода (функции): <b>GetCitiesByCountry</b> и <b>GetWeather</b> (рис. 94.1). На вход первой функции <b>GetcitiesByCountry</b> подают название страны, где хотят получить прогноз погоды, а на выходе функции получают перечисление городов этой страны, для которых Web-служба готова сделать прогноз погоды.</p>
<p><center><img src='/images/primer94a.jpg'></center><br /><center><b>Рис. 94.1. Два метода Web-службы прогноза погоды</b></center></p>
<p>На вход второй функции <b>GetWeather</b> подают названия города и страны, а на выходе функции получают XML-строку, содержащую прогнозируемые параметры погоды.</p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p>Напишем Web-приложение (также легко можно написать и Windows-приложение), обращающееся к функции GetWeather данной удаленной Web-службы. Причем программный код должен быть минимальным и демонстрировать лишь принцип подключения и доступ к нужному элементу (например, температуре) XML-документа.</p>
<p>Для этой цели после запуска <b>VB2010</b> выберем шаблон <b>Empty ASP.NET Web Application</b>, укажем имя <b>Name — Погода-Web</b>. К текущему проекту добавим<b>Web-форму</b>. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем на шаблоне <b>Web Form</b>. Далее, попав в конструктор <b>Web-формы</b>, из панели элементов <b>Toolbox</b> перетащим кнопку <b>Button</b>, текстовое поле <b>TextBox</b> для вывода строки с данными <b>XML</b> и метку <b>Label</b> для вывода на нее значения температуры.</p>
<p>Теперь наступает ключевой момент, а именно— подключение ссылки на удаленную Web-службу, содержащую класс с необходимыми методами. Для этого в пункте меню Project выберем команду <b>Add Web Reference</b> (эту команду можно также выбрать в контекстном меню окна <b>Solution Explorer</b>). В результате получим интерфейс, показанный на рис. 94.2, здесь в поле <b>URL</b> введем адрес <b>Web-службы</b> и щелкнем на кнопке <b>Go</b>.</p>
<p><center><img src='/images/primer94b.jpg'></center><br /><center><b>Рис. 94.2. Поиск нужной Web-службы в Сети</b></center><br />Теперь в окне под полем <b>URL</b> мы увидим оба метода данного сервиса в том виде, как это было на рис. 12.2 (после нажатия на кнопку <b>Go</b>). При этом станет доступной кнопка <b>Add Reference</b>. Щелкнем на этой кнопке, после этого в окне <b>Solution Explorer</b> появилась новая папка <b>Web References</b> со ссылкой на удаленный класс <b>net.webservicex.www</b> (рис. 94.3).</p>
<p><center><img src='/images/primer94c.jpg'></center><br /><center><b>Рис. 94.3. В окне Solution Explorer появилась ссылка на удаленный класс</b></center><br />Теперь этот класс, содержащий необходимую нам удаленную Web-службу, мы можем использовать в своем программном коде (листинг 94).</p>
<p><b>Листинг 94. Web-приложение, обращающееся к сервису удаленной Web-службы прогноза погоды</b></p>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Web-приложение, потребляющее удаленный Web-сервис прогноза погоды.</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Приложение демонстрирует XML-строку с параметрами погоды для го-</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; рода, указанного во входных параметрах при обращении к Web-сервису</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Это</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Web-</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">приложение</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Выяснить погоду</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> : Label1.Text = <span style="color:blue">Nothing</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.TextMode = <span style="color:#2B91AF">TextBoxMode</span>.MultiLine</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем клиентское приложение Web-сервиса: </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; http://www.webservicex.net/globalweather.asmx</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Cоздание экземпляра прокси-класса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ПОГОДА<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> net.webservicex.www.<span style="color:#2B91AF">GlobalWeather</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Функция GetWeather запрашивает строковые параметры с назва-</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; нием города и страны и возвращает строку с XML-документом:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Строка</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">_XML<span style="color:blue">As</span> <span style="color:blue">String</span> =</span><span style="font-size: 9.5pt; font-family: Consolas">ПОГОДА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.GetWeather(<span style="color:#A31515">&quot;Moscow&quot;</span>,<span style="color:#A31515">&quot;Russia&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Dim </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Строка</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">_XML As String = </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">ПОГОДА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">.GetWeather(&quot;Kyiv&quot;, &quot;Ukraine&quot;)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.Text = </span><span style="font-size: 9.5pt; font-family: Consolas">Строка</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">_XML</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Документ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> = <span style="color:blue">New</span> System.Xml.<span style="color:#2B91AF">XmlDocument</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Загрузка строки XML в XML-документ:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Документ.LoadXml(Строка_XML)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Узел <span style="color:blue">As</span> System.Xml.<span style="color:#2B91AF">XmlNode</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Элемент<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"> System.Xml.<span style="color:#2B91AF">XmlElement</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Узел</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> = </span><span style="font-size: 9.5pt; font-family: Consolas">Документ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.ChildNodes.Item(1)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Элемент</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> = </span><span style="font-size: 9.5pt; font-family: Consolas">Узел</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">(<span style="color:#A31515">&quot;Temperature&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Label1.Text =<span style="color:#A31515">&quot;Температура воздуха в Москве: &quot;</span> &amp; Элемент.InnerText</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">это</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Web Application &#8212; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">клиент</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Web-</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">сервиса</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно, в программном коде при обработке события &quot;щелчок на кнопке&quot; <b>Выяснить погоду</b> создается экземпляр класса удаленной Web-службы. Далее происходит непосредственное обращение к методу класса <b>GetWeather</b> с входными параметрами город и страна, метод <b>GetWeather</b> возвращает строку с XML-документом. Данную строку выводим в текстовое поле <b>TextBox1</b>. Для ее &quot;расшифровки&quot; загружаем эту строку в XML-документ. Значение температуры находим в содержимом элемента <b>&quot;Temperature&quot;</b>, затем выводим значение температуры на метку <b>Label1</b>.</p>
<p>Фрагмент работы программы показан на рис. 94.4.</p>
<p>Таким образом, продемонстрировано создание клиентского Web-приложения, потребляющего сервис Web-службы. Замечу, что аналогичным образом можно создавать и Windows-приложения (настольные приложения), которые также, будучи клиентами какой-либо Web-службы, могут получать, например, справочную информацию в онлайновом режиме.</p>
<p>Убедиться в работоспособности программы можно, открыв соответствующий файл решения в папке Погода-Web.</p>
<p><center><img src='/images/primer94d.jpg'></center><br /><center><b>Рис. 94.4. Работа клиента Web-службы &quot;Прогноз погоды&quot;</b></center><br /><strong><a href="/dwn.php?file=primer94.rar" target="_top" title="Скачать исходник к Примеру 94. Клиентское приложение, потребляющее сервис Web-службы &quot;Прогноз погоды&quot;">Скачать исходник к Примеру 94. Клиентское приложение, потребляющее сервис Web-службы &quot;Прогноз погоды&quot;</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer94/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 93. Отображение времени в Web-форме с использованием технологии AJAX</title>
		<link>http://vbprog.ru/primer93/</link>
		<comments>http://vbprog.ru/primer93/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 10:07:07 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=327</guid>
		<description><![CDATA[Мы уже обсуждали вопрос отображения времени в Windows-приложении (см. пример 70). Тогда, для того чтобы время обновлялось каждую секунду, нами был использован элемент управления Timer. При обработке события Tick (события, когда прошел заданный интервал времени interval, равный 1000 миллисекунд, т.е. 1с) элемента управления Timer в метку Label копировалось новое значение времени, при этом изображение формы [...]]]></description>
			<content:encoded><![CDATA[<p>Мы уже обсуждали вопрос отображения времени в Windows-приложении (см. пример 70). Тогда, для того чтобы время обновлялось каждую секунду, нами был использован элемент управления <b>Timer</b>. При обработке события <b>Tick</b> (события, когда прошел заданный интервал времени <b>interval</b>, равный 1000 миллисекунд, т.е. 1с) элемента управления <b>Timer</b> в метку <b>Label</b> копировалось новое значение времени, при этом изображение формы обновлялось (перерисовывалось). Когда речь идет о <b>Web-форме</b>, технология <b>ASP.NET</b> предполагает операции обратной отправки данных. Когда пользователь щелкает на кнопке или делает выбор в окне списка с включенной функцией <b>AutoPostBack</b>, серверу отсылается соответствующий запрос, после чего с него обратно клиенту отправляется целая страница. Если такое обращение к серверу будет происходить через каждую секунду, то возрастет объем сетевого трафика и вследствие инерции Сети пользователь будет ощущать дискомфорт. Кроме того, если на этой странице предусмотрено заполнение пользователем полей, то серверу будет отсылаться страница с частично заполненными полями.</p>
<p><span id="more-327"></span>Решение этой проблемы состоит в использовании технологии <b>AJAX</b>, которая обеспечивает возможность выполнения частичного визуального обновления страницы посредством поддерживаемой <b>ASP.NET AJAX</b> операции обратной отправки. Продемонстрируем возможность технологии <b>AJAX</b> на примере, когда мы имеем метку <b>Label</b> в <b>Web-форме</b>. На эту метку каждую секунду копируем новое время, но обновляем при этом не всю форму, а только метку с помощью технологии <b>AJAX</b>.<br />&nbsp;<br />Решая эту задачу, запустим <b>VB2010</b> и закажем новый проект из шаблона <b>Empty ASP.NET Web Application</b>, укажем имя <b>Name — AJAX_Timer</b>. К текущему проекту добавим Web-форму. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем по шаблону <b>Web Form</b>.</p>
<p>Далее, попав на вкладку конструктора <b>Web-формы</b>, перетащим в форму из раздела<b>AJAX Extensions</b> панели <b>ToolBox</b> элементы управления <b>ScriptManalger, UpdatePanel</b>. Затем на элемент <b>UpdatePanel</b> поместим <b>Timer</b> и метку <b>Label</b>. Теперь на вкладке файла программной поддержки <b>WebForml.aspx.vb</b> напишем программный код, приведенный в листинге 93.</p>
<p><b>Листинг 93. Отображение времени в Web-форме</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Web-страница демонстрирует время на метке Label1. На эту метку</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; каждую секунду копируем новое время, но обновляем при этом не всю</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; форму, а только метку с помощью технологии AJAX.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Timer1.Interval = 1000 <span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">миллисекунд</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> = 1 </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">сек</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Текущее время</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">: &quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> +<span style="color:#2B91AF">DateTime</span>.Now.ToLongTimeString</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Timer1_Tick(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Timer1.Tick</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Текущее время</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">: &quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> +<span style="color:#2B91AF">DateTime</span>.Now.ToLongTimeString</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, при загрузке страницы задаем интервал времени, равный одной секунде. При обработке события <b>Tick</b> — события, когда прошел заданный интервал времени, в метку <b>Label1</b> копируется новое значение времени. При этом благодаря использованию технологии <b>AJAX</b> обновляется не вся <b>Web-форма</b>, а только те элементы, которые расположены на элементе <b>UpdatePanel</b>. Фрагмент работы программы показан на рис. 11.37.</p>
<p><center><img src='/images/primer93.jpg'></center><br /><center><b>Рис. 93. В форме обновляется только AJAX-элемент UpdatePanel</b></center><br /><strong><a href="/dwn.php?file=primer93.rar" target="_top" title="Скачать исходник к Примеру 93. Отображение времени в Web-форме с использованием технологии AJAX">Скачать исходник к Примеру 93. Отображение времени в Web-форме с использованием технологии AJAX</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer93/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 92. Гостевая книга</title>
		<link>http://vbprog.ru/primer92/</link>
		<comments>http://vbprog.ru/primer92/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 08:54:31 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=325</guid>
		<description><![CDATA[Допустим, на своем сайте вы обсуждаете какую-либо тему и хотите, чтобы посетители сайта оставляли свои мнения, впечатления, пожелания, замечания, адресованные владельцу или будущим посетителям. Причем так, чтобы сообщения, написанные посетителями, были бы тут же отображены и сохранены, и тем самым стимулировали желание новых посетителей написать свое сообщение. Такое программное обеспечение называют гостевой книгой сайта. В [...]]]></description>
			<content:encoded><![CDATA[<p>Допустим, на своем сайте вы обсуждаете какую-либо тему и хотите, чтобы посетители сайта оставляли свои мнения, впечатления, пожелания, замечания, адресованные владельцу или будущим посетителям. Причем так, чтобы сообщения, написанные посетителями, были бы тут же отображены и сохранены, и тем самым стимулировали желание новых посетителей написать свое сообщение. Такое программное обеспечение называют гостевой книгой сайта.</p>
<p>В гостевой книге следует предусмотреть поля для ввода имени посетителя, адреса его электронной почты, а также поле для непосредственно сообщения. Все записи, оставленные посетителями сайта, будем сохранять в текстовом файле <b>kniga.txt</b> на винчестере сервера, предоставляющего Web-хостинг. Впрочем, вместо текстового файла можно воспользоваться какой-либо базой данных.</p>
<p><span id="more-325"></span>Для программирования гостевой книги запустим <b>VB2010</b>, в окне <b>New Project</b> выберем шаблон <b>Empty ASP.NET Web Application</b>, в поле <b>Name</b> укажем имя нового решения <b>Гостевая_книга</b> и щелкнем на кнопке <b>OK</b>. Теперь добавим к текущему проекту Web-форму. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b>, в появившемся окне укажем шаблон <b>Web Form</b> и щелкнем на кнопке <b>Add</b>.</p>
<p>На вкладке конструктора формы в панели элементов нам понадобятся четыре метки <b>Label</b>, три текстовых поля <b>TextBox</b>, соответственно, для имени пользователя, его электронной почты и сообщения, одна командная кнопка <b>Button</b> с надписью &quot;Добавить сообщение&quot; и сетка данных <b>GridView</b> для отображения всех вводимых записей. Кроме того, возле каждого текстового поля разместим валидатор <b>RequiredFieldValidator</b>, проверяющий факт заполнения текстовых полей. Правильность заполнения проверять не будем, поскольку в данной ситуации если мы будем слишком &quot;принципиальничать&quot; по поводу вводимых данных, то посетитель потеряет терпение и уйдет на другой ресурс (не наш!). Не забываем, что мы гораздо больше заинтересованы во всех новых сообщениях, чем посетители их написать. С другой стороны (другая крайность), если мы вовсе не будем контролировать заполнения текстовых полей, то у недобросовестного пользователя появится соблазн нажимать кнопку <b>Добавить сообщение</b> без заполнения полей и заполнять таблицу сетки данных пустыми строками, что будет вовсе дискредитацией замысла гостевой книги. В конструкторе формы разместим выбранные элементы управления так, как показано на рис. 92.1.</p>
<p>После размещения в конструкторе необходимых элементов управления переходим на вкладку программного кода. Текст программы представлен в листинге 92.</p>
<p><center><img src='/images/primer92a.jpg'></center><br /><b>Рис. 92.1. Размещение элементов управления в конструкторе формы</b></p>
<p><b>Листинг 92 Гостевая книга</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Данная Web-страница приглашает посетителя оставить</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; какие-либо записи, которые могут прочитать другие</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; посетители страницы. Записи сохраняются в текстовом файле</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; kniga.txt. Записи отображаются на Web-странице с</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; помощью элемента сетка данных GridView. </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Таблица<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> <span style="color:#2B91AF">DataTable</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Читатель<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"> IO.<span style="color:#2B91AF">StreamReader</span>,</span>Писатель <span lang="EN-US" style="color:blue">As</span><span lang="EN-US"> IO.<span style="color:#2B91AF">StreamWriter</span></span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Label1.Text =<span style="color:#A31515">&quot;ВЫ МОЖЕТЕ НАПИСАТЬ КАКОЕ-НИБУДЬ &quot;</span> &amp;<span style="color:#A31515">&quot;СООБЩЕНИЕ В НАШЕЙ ГОСТЕВОЙ КНИГЕ&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Label2.Text =<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Ваше имя</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">:&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label3.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Ваш</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> E-mail:&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Label4.Text =<span style="color:#A31515">&quot;Ваше сообщение:&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.Text =<span style="color:#A31515">&quot;Добавить сообщение&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Разрешаем многострочие:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TextBox3.TextMode = <span style="color:#2B91AF">TextBoxMode</span>.MultiLine</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Контролируем обязательность заполнения всех полей:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RequiredFieldValidator1.ErrorMessage = <span style="color:#A31515">&quot;* Следует заполнить это текстовое поле&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">RequiredFieldValidator1.ControlToValidate = <span style="color:#A31515">&quot;TextBox1&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RequiredFieldValidator2.ErrorMessage = <span style="color:#A31515">&quot;* </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Следует заполнить это текстовое поле</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RequiredFieldValidator2.ControlToValidate = <span style="color:#A31515">&quot;TextBox2&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RequiredFieldValidator3.ErrorMessage = <span style="color:#A31515">&quot;* </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Следует заполнить это текстовое поле</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;RequiredFieldValidator3.ControlToValidate = <span style="color:#A31515">&quot;TextBox3&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Таблица</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Columns.Add(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Дата</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">) : </span><span style="font-size: 9.5pt; font-family: Consolas">Таблица</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Columns.Add(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Имя</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Таблица</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Columns.Add(<span style="color:#A31515">&quot;E-mail&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Таблица</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Columns.Add(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Сообщение</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.BorderWidth = WebControls.<span style="color:#2B91AF">Unit</span>.Pixel(2)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Заполнить</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">GridView()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Public</span> <span style="color:blue">Sub</span></span><span style="font-size: 9.5pt; font-family: Consolas">Заполнить</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">GridView()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Эта процедура читает файл kniga.txt (если его нет, то</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; создает, разбивает каждую строку файла на четыре части</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; (дата, имя, E-mail и сообщение) и заполняет этими</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; частями строки Таблицы. Затем записывает эту Таблицу</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; в сетку данных GridView.</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Открываем файл kniga.txt, а если его нет, то</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; его создаем:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Открыватель <span style="color:blue">As</span> IO.<span style="color:#2B91AF">FileStream</span> = <span style="color:blue">New</span> IO.<span style="color:#2B91AF">FileStream</span>(Request.PhysicalApplicationPath &amp; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;kniga.txt&quot;</span>, IO.<span style="color:#2B91AF">FileMode</span>.OpenOrCreate)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Открываю поток для чтения всех записей из файла:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Читатель =<span style="color:blue">New</span> IO.<span style="color:#2B91AF">StreamReader</span>(Открыватель)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; В качестве разделителя частей строки файла выбираю</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Tab, поскольку Tab невозможно ввести в текстовое</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; поле. После нажатия клавиши &lt;Tab&gt; происходит переход</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; в следующее текстовое поле.</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">Разделитель<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">Char</span>() = <span style="color:blue">New</span><span style="color:blue">Char</span>() {vbTab} <span style="color:green">&#8216;-</span></span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">массив</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Читаю из файла одну строку:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Одна_строка <span style="color:blue">As</span><span style="color:blue">String</span> = Читатель.ReadLine</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Массив_частей_строки<span style="color:blue">As</span> <span style="color:blue">String</span>()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Цикл по строчкам файла kniga.txt</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">While</span> Одна_строка &lt;&gt; <span style="color:#A31515">&quot;&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Функция Split делит строку на четыре части и</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; присваивает каждую часть элементам массива:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Массив_частей_строки = Одна_строка.Split(Разделитель)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Загружаю данные в таблицу, то есть заполняю</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; одну строку таблицы:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Таблица.LoadDataRow(Массив_частей_строки, <span style="color:blue">True</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Читаю из файла одну строку:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Одна_строка = Читатель.ReadLine</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">While</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = Таблица</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Обновление сетки данных:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Таблица.Clear()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Читатель.Close() : Открыватель.Close()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Добавить(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> <span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Открываю поток для добавления данных в конец файла:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Писатель =<span style="color:blue">New</span> IO.<span style="color:#2B91AF">StreamWriter</span>(Request.PhysicalApplicationPath &amp; <span style="color:#A31515">&quot;kniga.txt&quot;</span>, <span style="color:blue">True</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; True означает разрешить добавление строк в файл.</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Записываю в файл новое сообщение:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Писатель.WriteLine(DateTime.Now.Date.ToString(). _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Substring(0, 10) &amp; vbTab &amp; TextBox1.Text &amp; _</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; vbTab &amp; TextBox2.Text &amp; vbTab &amp; TextBox3.Text)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Очищаю поля и закрываю поток:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.Text =<span style="color:#A31515">&quot;&quot;</span> : TextBox2.Text = <span style="color:#A31515">&quot;&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox3.Text =<span style="color:#A31515">&quot;&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Писатель.Close()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ЗаполнитьGridView()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, вначале создаем таблицу данных класса <b>DataTable</b> и два потока данных для чтения и для записи файлов так, чтобы они были видны из всех процедур класса. При обработке события загрузки формы организуем контроль обязательности заполнения текстовых полей формы, задаем &quot;шапку&quot; таблицы (т. е. названия колонок таблицы), а последней командой вызываем процедуру <b>ЗаполнительGridView</b>.</p>
<p>Эта процедура в цикле <b>While</b> читает строки текстового файла <b>kniga.txt</b> и заполняет ими строки таблицы данных методом <b>LoadDataRow()</b>. Далее заполненную таблицу данных указываем в качестве источника данных (<b>DataSource</b>) для сетки данных <b>GridView1</b>, предназначенной для визуализации (отображения) таблицы в форме. После этого важно очистить таблицу данных методом <b>Clear ()</b>.</p>
<p>При обработке события &quot;щелчок на кнопке&quot; открываем поток данных писатель для добавления данных в конец файла <b>kniga.txt</b> и записываем в этот файл текстовую строку, содержащую текущую дату, имя посетителя Web-страницы, его e-mail и непосредственно его сообщение. Причем в качестве разделителя между этими текстовыми строками мы используем управляющий символ <b>Tab</b>, поскольку его невозможно ввести в текстовое поле, т. к. после нажатия клавиши <b>&lt;Tab&gt;</b> предусмотрен переход в следующее текстовое поле. После закрытия потока данных писатель вызываем процедуру <b>ЗаполнитьGridView</b>, которая как бы начинает опять &quot;с чистого листа&quot;: снова открывает поток для чтения файла и опять заполняет таблицу данных, которая, как мы помним, была очищена от предыдущих данных. Именно поэтому строки (команды) процедуры <b>ЗаполнитьGridView</b> были оформлены в отдельную процедуру, поскольку заполнение таблицы и ее визуализация происходят два раза: один раз при загрузке формы, а другой при добавлении новой записи.</p>
<p>Фрагмент работы гостевой книги представлен на рис. 92.2.</p>
<p><center><img src='/images/primer92b.jpg'></center><br /><center><b>Рис. 92.2. Интерфейс гостевой книги</b></center><br /><strong><a href="/dwn.php?file=primer92.rar" target="_top" title="Скачать исходник к Примеру 92. Гостевая книга">Скачать исходник к Примеру 92. Гостевая книга</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer92/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 91. Формирование изображения методами класса Graphics и вывод его в Web-форму</title>
		<link>http://vbprog.ru/primer91/</link>
		<comments>http://vbprog.ru/primer91/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 07:46:07 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=323</guid>
		<description><![CDATA[При создании Web-страниц часто бывает удобно сначала создать изображение, что-либо на нем нарисовать, например график какой-нибудь зависимости, актуальной именно в момент загрузки страницы, затем это изображение записать на диск сервера и вывести его клиенту в обозреватель. Таким графиком может быть, скажем, график статистики посещений сайта по месяцам, по неделям, по дням. Задача, решаемая в данном [...]]]></description>
			<content:encoded><![CDATA[<p>При создании Web-страниц часто бывает удобно сначала создать изображение, что-либо на нем нарисовать, например график какой-нибудь зависимости, актуальной именно в момент загрузки страницы, затем это изображение записать на диск сервера и вывести его клиенту в обозреватель. Таким графиком может быть, скажем, график статистики посещений сайта по месяцам, по неделям, по дням.</p>
<p>Задача, решаемая в данном разделе, состоит в следующем. Во время загрузки Web-страницы создать изображение, методами класса <b>Graphics</b> вывести на это изображение текстовую строку, представляющую текущую дату. С целью демонстрации возможностей методов <b>Graphics</b> развернуть данную строку на некоторый угол относительно горизонта. Далее сохранить рисунок в текущий каталог сервера и вывести его на Web-страницу.</p>
<p><span id="more-323"></span>Для решения этой задачи запустим <b>VB2010</b>, закажем новый проект шаблона <b>Empty ASP.NET Web Application</b>. Добавим Web-форму, для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне выберем шаблон <b>Web Form</b> и добавим его к нашему проекту. На вкладке дизайнера формы <b>WebForm1.aspx</b> добавим элемент управления <b>Image</b>. А на вкладке<b>WebForm1.aspx</b>.vb введем программный код, представленный в листинге 91.</p>
<p><b>Листинг 91. Формирование изображения и вывод его на Web-форму</b><br />
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Web-страница формирует файл изображения методами класса Graphics,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; на изображение выводится текстовая строка, наклоненная к горизонту</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; на 356 градусав. Далее этот файл изображения отображается в форме.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.Drawing</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем точечное изображение размером 215 x 35 точек</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">с глубиной цвета</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> 24:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">РАСТР<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:#2B91AF">Bitmap</span> = <span style="color:blue">New</span><span style="color:#2B91AF">Bitmap</span>(width:=215, height:=35, Format:=Imaging.<span style="color:#2B91AF">PixelFormat</span>.Format24bppRgb)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Создаем новый объект класса Graphics из изображения РАСТР:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ГРАФ<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:#2B91AF">Graphics</span> = <span style="color:#2B91AF">Graphics</span>.FromImage(</span>РАСТР</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Теперь становятся доступными методы класса Graphics !</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Заливка поверхности указанным цветом:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ГРАФ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Clear(<span style="color:#2B91AF">Color</span>.AliceBlue)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">или ГРАФ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">.Clear(ColorTranslator.FromHtml(&quot;#ECECFF&quot;))</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Дата<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = <span style="color:#A31515">&quot;</span></span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Сегодня</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> &quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> + Format(Now, <span style="color:#A31515">&quot;d MMMM, yyyy&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Разворачиваем мир на 356 градусов по часовой стрелке:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ГРАФ.RotateTransform(356.0F)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Выводим на изображение текстовую строку Дата, </span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; x, y &#8212; координаты левого верхнего угла строки:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ГРАФ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.DrawString(</span><span style="font-size: 9.5pt; font-family: Consolas">Дата</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">,<span style="color:blue">New</span> <span style="color:#2B91AF">Font</span>(<span style="color:#A31515">&quot;Times New Roman&quot;</span>, 14, <span style="color:#2B91AF">FontStyle</span>.Regular),<span style="color:#2B91AF">Brushes</span>.Red, x:=5, y:=15)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Определяем физический путь файла для текущего веб-узла,</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; сохраняем изображение в файле risunok.jpg каталога Web-узла:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; РАСТР</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Save(Request.PhysicalApplicationPath + <span style="color:#A31515">&quot;risunok.jpg&quot;</span>, Imaging.<span style="color:#2B91AF">ImageFormat</span>.Jpeg)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Возможность вывода изображения в исходящий поток ответа НТТР:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">РАСТР</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">.Save(Response.OutputStream, Imaging.ImageFormat.Jpeg)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Цвет и ширина рамки рисунка:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Image1.BorderColor = <span style="color:#2B91AF">Color</span>.Red</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image1.BorderWidth = 2</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Указываем виртуальный путь к файлу изображения:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Image1.ImageUrl = Request.ApplicationPath + <span style="color:#A31515">&quot;risunok.jpg&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Освобождение ресурсов:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; РАСТР.Dispose()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ГРАФ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Dispose()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, при загрузке страницы создаем точечное изображение указанного размера, формат Format24bppRgb указывает, что отводится 24 бита на точку: по 8 бит на красный, зеленый и синий каналы. Данное изображение позволяет создать новый объект класса Graphics методом FromImage. Теперь разворачиваем поверхность рисования на 356° методом RotateTransform и выводим на поверхность рисования текстовую строку с текущей датой. Задавая физический путь файла изображения, методом Save сохраняем его в каталоге Web-узла в формате JPEG. В комментарии приведена возможность вывода рисунка в исходящий поток ответа HTTP, при этом изображение не будет записываться на диск, но пользователь будет видеть его в браузере. Далее элементу управления Image1 указываем виртуальный путь к файлу изображения. Замечу, что физический путь не должен отправляться клиенту, поскольку он может использоваться злоумышленниками для получения сведений о приложении. На рис. 91 показан фрагмент работы программы.</p>
<p><center><img src='/images/primer91.jpg'></center><br /><center><b>Рис. 91. Вывод в форму изображения, сформированного программно</b></center><br /><strong><a href="/dwn.php?file=primer91.rar" target="_top" title="Скачать исходник к Примеру 91. Формирование изображения методами класса Graphics и вывод его в Web-форму">Скачать исходник к Примеру 91. Формирование изображения методами класса Graphics и вывод его в Web-форму</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 90. Вывод изображения в Web-форму</title>
		<link>http://vbprog.ru/primer90/</link>
		<comments>http://vbprog.ru/primer90/#comments</comments>
		<pubDate>Sat, 12 Nov 2011 06:27:37 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=321</guid>
		<description><![CDATA[Отображение изображения в Web-форме является тривиальной задачей. Для ее решения Visual Studio имеет класс Image пространства имен System.Web.UI.WebControls. С помощью свойства ImageUrl этого класса задаем URL-адреc изображения, посредством AlternateText задаем альтернативный текст, отображаемый в элементе управления Image, когда изображение недоступно. Немножко усложним задачу и поставим ее в следующем виде. На странице имеем некоторое изображение, при [...]]]></description>
			<content:encoded><![CDATA[<p>Отображение изображения в Web-форме является тривиальной задачей. Для ее решения Visual Studio имеет класс <b>Image</b> пространства имен <b>System.Web.UI.WebControls</b>. С помощью свойства <b>ImageUrl </b>этого класса задаем URL-адреc изображения, посредством <b>AlternateText</b> задаем альтернативный текст, отображаемый в элементе управления <b>Image</b>, когда изображение недоступно. Немножко усложним задачу и поставим ее в следующем виде. На странице имеем некоторое изображение, при щелчке мышью на нем изображение увеличивается вдвое без перезагрузки Web-страницы.</p>
<p><span id="more-321"></span>Сначала решим эту задачу, используя исключительно HTML-разметку с небольшим включением программного кода на <b>JavaScript</b>. Очень удобно выполнить HTML-разметку в редакторе Visual Studio, поэтому запустим систему <b>VB2010</b> и создадим новый проект из шаблона <b>Empty ASP.NET Web Application</b>, назовем его <b>Web-изображение</b>. К текущему проекту добавим HTML-страницу. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем по шаблону <b>HTML Page</b>. Далее на вкладке <b>HTMLPage1.htm</b> введем текст, представленный в листинге 90.1.</p>
<p><b>Листинг 90.1. Увеличение изображения в Web-форме (HTML-код)</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;!</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">DOCTYPE</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">html</span> <span style="color:red">PUBLIC</span><span style="color:blue">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span> </span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">html</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">xmlns</span><span style="color:blue">=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span style="font-size: 9.5pt; font-family: Consolas; color: maroon">head</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">&lt;</span><span style="color:maroon">title</span><span style="color:blue">&gt;</span>Щелкнуть мышью для увеличения<span style="color:blue">&lt;/</span><span style="color:maroon">title</span><span style="color:blue">&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;/</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">head</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">body</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">&lt;</span><span style="color:maroon">img</span><span style="color:red">src</span><span style="color:blue">=&quot;poryv.png&quot;</span><span style="color:red">width</span><span style="color:blue">=&quot;100&quot;</span><span style="color:red">height</span><span style="color:blue">=&quot;100&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: red">alt</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">=&quot;Двойной щелчок возвращает в исходный размер&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: red">onclick</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">=&quot;this.src=&#8217;poryv.png&#8217;;this.height=200;this.width=200&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;<span style="color:red">ondblclick</span><span style="color:blue">=&quot;this.src=&#8217;poryv.png&#8217;;this.height=100;this.width=100&quot;</span><span style="color:blue">/&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;/</span><span style="font-size: 9.5pt; font-family: Consolas; color: maroon">body</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;/</span><span style="font-size: 9.5pt; font-family: Consolas; color: maroon">html</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p>В приведенной разметке в качестве атрибутов тега <b>&lt;img&gt;</b>, размечающего изображение, записаны две обработки событий onclick (щелчок мышью на изображении) и ondblclick (двойной щелчок) на JavaScript. Теперь для просмотра этой страницы в браузере мы можем нажать клавишу <b>&lt;F5&gt;</b> или непосредственно открыть файл<b>HTMLPage1.htm</b>, например, в <b>Internet Explorer</b>. При этом мы увидим следующее (рис. 90.1).</p>
<p>Теперь решим эту же задачу программированием на <b>VB2010</b>. Для этого добавим в текущий проект новую <b>Web-форму</b>. В пункте меню <b>Project</b> выполним команду <b>Add New Item</b> и в появившемся окне выберем шаблон <b>Web Form</b>. На вкладке конструктора формы перетащим из панели <b>Toolbox</b> элемент управления изображения <b>Image</b>, а на вкладке программного кода <b>WebForm1.aspx</b> напишем текст, представленный в листинге 90.2.</p>
<p><center><img src='/images/primer90a.jpg'></center><br /><center><b>Рис. 90.1. Щелчок мышью увеличивает изображение</b></center><br /><b>Листинг 90.2. Увеличение изображения в Web-форме (VB2010-код)</b></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; На странице имеем изображение &#8212; файл poryv.png, при щелчке мышью на</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; нем изображение увеличивается вдвое без перезагрузки Web-страницы.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Page.Title =<span style="color:#A31515">&quot;Щелкнуть мышью для увеличения&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Указываем виртуальный путь к файлу изображения:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Image1.ImageUrl = Request.ApplicationPath + <span style="color:#A31515">&quot;poryv.png&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Получаем URL, который используется в браузере:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">адрес<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = ResolveClientUrl(Image1.ImageUrl)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Добавляем атрибут Alt:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image1.AlternateText = <span style="color:#A31515">&quot;Двойной щелчок возвращает в исходный размер&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Добавляем два события Javascript:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Image1.Attributes.Add(<span style="color:#A31515">&quot;onclick&quot;</span>,<span style="color:#A31515">&quot;this.src=&#8217;&quot;</span> &amp; </span><span style="font-size: 9.5pt; font-family: Consolas">адрес</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> &amp; <span style="color:#A31515">&quot;&#8217;;this.height=200;this.width=200&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Image1.Attributes.Add(<span style="color:#A31515">&quot;ondblclick&quot;</span>,<span style="color:#A31515">&quot;this.src=&#8217;&quot;</span> &amp; </span><span style="font-size: 9.5pt; font-family: Consolas">адрес</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> &amp; <span style="color:#A31515">&quot;&#8217;;this.height=100;this.width=100&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, кроме двух очевидных свойств объекта <b>Image1</b><b>ImageUrl</b> и <b>AlternateText</b> свойство <b>Attributes</b> добавляет объекту <b>Image1</b> два события <b>JavaScript</b>. Нам пришлось включать таким образом события <b>JavaScript</b>, поскольку объект <b>Image1</b> не имеет событий мыши.</p>
<p>Поставим другую, более интересную задачу. На Web-странице имеем изображение, например, мужчины. Это изображение используем для ссылки на другую Web-страницу, например, на <b>WebForm1.aspx</b>. Причем при наведении на него указателя мыши происходит смена изображения на изображение женщины.</p>
<p>Для решения этой задачи добавим в текущий проект еще одну HTML-страницу и на вкладке разметки <b>HTMLPage2.htm</b> напишем текст, приведенный в листинге 90.3.</p>
<p><b>Листинг 90.3. Смена изображения в Web-форме (HTML-код)</b></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;!</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">DOCTYPE</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">html</span> <span style="color:red">PUBLIC</span><span style="color:blue">&quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">html</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">xmlns</span><span style="color:blue">=&quot;http://www.w3.org/1999/xhtml&quot;&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span style="font-size: 9.5pt; font-family: Consolas; color: maroon">head</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">&lt;</span><span style="color:maroon">title</span><span style="color:blue">&gt;</span>Смена изображения при наведении<span style="color:blue">&lt;/</span><span style="color:maroon">title</span><span style="color:blue">&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;/</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">head</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">body</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">a</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">href</span><span style="color:blue">=&quot;HTMLPage1.htm&quot;&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: maroon">img</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">onmouseover</span><span style="color:blue">=&quot;this.src=&#8217;g.jpg&#8217;&quot;</span><span style="color:red">onmouseout</span><span style="color:blue">=&quot;this.src=&#8217;m.jpg&#8217;&quot;</span> </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: red">alt</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">=&quot;Щелкните, чтобы перейти на HTMLPage1.htm&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: red">src</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">=&quot;m.jpg&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:red">border</span><span style="color:blue">=&quot;0&quot;</span><span style="color:blue">/&gt;</span> <span style="color:blue">&lt;/</span><span style="color:maroon">a</span><span style="color:blue">&gt;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;/</span><span style="font-size: 9.5pt; font-family: Consolas; color: maroon">body</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&lt;/</span><span style="font-size: 9.5pt; font-family: Consolas; color: maroon">html</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">&gt;</span></p>
<p>Здесь тег <b>&lt;a&gt;</b> обеспечивает гиперссылку на другую Web-страницу — <b>HTMLPage1.htm</b>, причем в качестве гиперссылки используется изображение <b>m.jpg</b> (изображение мужчины). Это изображение меняется на изображение женщины (файл g.jpg) при наведении на него указателя мыши (JavaScript-событие <b>OnMouseOver</b>) и возвращается в исходное, когда указатель мыши покидает элемент (событие <b>OnMouseOver</b>).</p>
<p>Установим в качестве стартовой страницы проекта файл HTMLPage2.htm. Для этого в контекстном меню окна <b>Solution Explorer</b> для этого файла укажем <b>Set As Start Page</b>. Внешний вид данной Web-страницы в браузере показан на рис. 90.2.</p>
<p><center><img src='/images/primer90b.jpg'></center><br /><center><b>Рис. 90.2. Смена изображения при наведении указателя мыши</b></center><br />Для решения этой же задачи с помощью VB2010 в текущий проект добавим новую Web-форму — <b>WebForm2.aspx</b>. В конструкторе формы добавим из панели <b>Toolbox</b> элемент управления <b>ImageButton</b>, отображающий изображение и отвечающий на нажатия на нем кнопки мыши. На вкладке программного кода этой формы напишем текст программы, приведенной в листинге 90.4.</p>
<p><b>Листинг 90.4. Смена изображения в Web-формы (VВ2010-код)</b></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; На Web-странице имеем изображение, например, мужчины &#8212; файл</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; m.jpg. Это изображение используем для ссылки на другую</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Web-страницу, например, на WebForm1.aspx. Причем при наведении</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; на него указателя мыши происходит смена изображения на изображение</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">женщины</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> &#8212; </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">файл</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> g.jpg</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm2</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Элемент управления ImageButton отображает изображение и </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; отвечает за нажатия на нем указателя мыши:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageButton1.PostBackUrl = <span style="color:#A31515">&quot;WebForm1.aspx&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Указываем виртуальный путь к файлу изображения:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">ImageButton1.ImageUrl = Request.ApplicationPath + <span style="color:#A31515">&quot;m.jpg&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Задаем альтернативный текст</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageButton1.AlternateText = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Щелкните</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">,</span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">чтобы перейти на</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> WebForm1.aspx&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Добавляем два события Javascript:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">ImageButton1.Attributes.Add(<span style="color:#A31515">&quot;onmouseover&quot;</span>,<span style="color:#A31515">&quot;this.src=&#8217;g.jpg&#8217;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ImageButton1.Attributes.Add(<span style="color:#A31515">&quot;onmouseout&quot;</span>,<span style="color:#A31515">&quot;this.src=&#8217;m.jpg&#8217;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, мы использовали те же приемы, что и в предыдущей задаче.</p>
<p><strong><a href="/dwn.php?file=primer90.rar" target="_top" title="Скачать исходник к Примеру 90. Вывод изображения в Web-форму">Скачать исходник к Примеру 90. Вывод изображения в Web-форму</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 89. Чтение/запись cookie-файлов</title>
		<link>http://vbprog.ru/primer89/</link>
		<comments>http://vbprog.ru/primer89/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 09:34:08 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=319</guid>
		<description><![CDATA[Cookie (от англ. cookie — печенье) — это небольшой фрагмент данных (обычно до 4096 байт), созданный Web-сервером и хранимый на компьютере клиента (пользователя) в виде файла. Каждый раз при запросе какой-либо страницы сайта браузер пользователя посылает серверу в HTTP-запросе этот cookie-файл. Данные, записанные в cookie-файле, обычно используются для аутентификации пользователя, т. е. для его распознавания [...]]]></description>
			<content:encoded><![CDATA[<p>Cookie (от англ. cookie — печенье) — это небольшой фрагмент данных (обычно до 4096 байт), созданный Web-сервером и хранимый на компьютере клиента (пользователя) в виде файла. Каждый раз при запросе какой-либо страницы сайта браузер пользователя посылает серверу в HTTP-запросе этот cookie-файл. Данные, записанные в cookie-файле, обычно используются для аутентификации пользователя, т. е. для его распознавания среди прочих пользователей, для хранения его персональных предпочтений, настроек пользователя, для ведения статистики пользователей и пр. В самом начале использования cookie было для определения, посещал ли пользователь сайт ранее. Зайдя на любой сайт, вы можете увидеть активные на данном сайте cookie, набрав в адресной строке браузера следующее:</p>
<p><b>javascript:alert(&quot;Cookies: &quot;+document.cookie)</b></p>
<p><span id="more-319"></span>В ответ ваш Web-браузер покажет вам примерно такое окно, как приведено на рис. 89.1.</p>
<p><center><img src='/images/primer89a.jpg'></center><br /><center><b>Рис. 89.1. Отображение активного cookie на некотором сайте</b></center><br />В этом окне содержатся те сведения, которые сервер некоторого Web-узла закодировал о вас в cookie-файле, записанном на ваш компьютер.</p>
<p>В данном примере мы научимся читать cookie при загрузке страницы и записывать cookie-файл при нажатии пользователем командной кнопки. То есть постановка задачи следующая. Web-страница предлагает посетителю ввести данные о себе: его имя и род занятий. При нажатии кнопки <b>Запись Cookie</b> введенные в текстовые поля сведения будут записаны в cookie-файл. Этот cookie-файл будет храниться на компьютере пользователя сутки. В течение этих суток, каждый раз вызывая данную страницу, в текстовых полях мы будем видеть введенные нами сведения, которые мы можем тут же исправлять и опять записывать в cookie. Фрагмент функционирования подобной Web-страницы приведен на рис. 89.2.</p>
<p><center><img src='/images/primer89b.jpg'></center><br /><center><b>Рис. 89.2. Фрагмент работы Web-страницы записи cookie</b></center><br />Для реализации поставленной задачи запустим <b>VB2010</b>, закажем новый проект из шаблона <b>Empty ASP.NET Web Application</b>, назовем его <b>Cookie</b>. К текущему проекту добавим Web-форму. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем по шаблону <b>Web Form</b>.</p>
<p>Затем из панели <b>Toolbox</b> перенесем в проектируемую Web-форму две метки <b>Label</b>, два текстовых поля <b>TextBox</b> и командную кнопку <b>Button</b>. Содержимое файла программной поддержки <b>WebForm1.aspx.vb</b> приведено в листинге 89.</p>
<p><b>Листинг 89. Чтение/запись cookie-файлов<br /></b><br />
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Чтение-запись Cookie-файлов. Web-страница предлагает посетителю</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; ввести данные о себе: его имя и род занятий. При нажатии на </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; кнопку Запись Cookie введенные в текстовые поля сведения будут</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; записаны в Cookie-файл. Этот Cookie-файл будет храниться на </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; компьютере пользователя в течение суток. В течение этих суток, </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; каждый раз вызывая данную страницу, в текстовых полях мы будем </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; видеть введенные нами сведения, которые мы можем тут же</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; исправлять и опять записывать в Cookie. </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Page.Title =<span style="color:#A31515">&quot;Введите данные о себе&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; При повторной отправке выйти из процедуры:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">If</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> Page.IsPostBack = <span style="color:blue">True</span> <span style="color:blue">Then</span> <span style="color:blue">Exit Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Label1.Text =<span style="color:#A31515">&quot;Имя посетителя&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label2.Text =<span style="color:#A31515">&quot;Род занятий&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.Text =<span style="color:#A31515">&quot;Запись Cookie&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; ЧТЕНИЕ КУКИ:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Куки может быть целая коллекция:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Dim CookieN As HttpCookieCollection</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Cookie1 <span style="color:blue">As</span><span style="color:#2B91AF">HttpCookie</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Читаю только один раздел Cookie &quot;О посетителе страницы&quot;:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Cookie1 = Request.Cookies(<span style="color:#A31515">&quot;О посетителе страницы&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Если на машине клиента нет такого Cookie:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">If</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> Cookie1 <span style="color:blue">Is</span> <span style="color:blue">Nothing</span><span style="color:blue">Then</span> <span style="color:blue">Exit Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Если есть, то заполняю текстовые поля из Cookie:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">TextBox1.Text = Cookie1.Item(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Имя посетителя</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">TextBox2.Text = Cookie1.Item(<span style="color:#A31515">&quot;Род занятий посетителя&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Запись</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Cookie:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Cookie1 <span style="color:blue">As</span><span style="color:#2B91AF">HttpCookie</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Cookie1 =<span style="color:blue">New</span> <span style="color:#2B91AF">HttpCookie</span>(<span style="color:#A31515">&quot;О посетителе страницы&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Запись двух пар имя(ключ)-значение:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Cookie1.Values(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Имя посетителя</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">) = TextBox1.Text</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Cookie1.Values(<span style="color:#A31515">&quot;Род занятий посетителя&quot;</span>) = TextBox2.Text</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Установка даты удаления Cookie: сейчас плюс один день:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Cookie1.Expires = <span style="color:#2B91AF">DateTime</span>.Now.AddDays(1)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Добавление раздела &quot;О посетителе страницы&quot; в Cookie-файл:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Response.Cookies.Add(Cookie1)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Здесь ВО время загрузки страницы <b>Page_Load</b> при <b>isPostBack = False</b> инициализируем надписи на метках <b>Label</b>, а затем читаем cookie-файл посредством объекта <b>Request</b>. В данном случае функция <b>Request.Cookies</b> возвращает раздел cookie-файла &quot;О посетителе страницы&quot;. В данной программе мы предусмотрели только один раздел, хотя их может быть несколько (коллекция <b>HttpCookieCollection</b>). Если компьютер пользователя не содержит данного cookie-файла, то программируем выход <b>Exit Sub</b> из данной процедуры. Если cookie прочитан, то текстовые поля заполняем соответствующими значениями.</p>
<p>При обработке события щелчок на кнопке <b>Запись Cookie</b> происходит запись в cookie-файл, в его раздел &quot;О посетителе страницы&quot; двух пар &quot;имя — значение&quot; имя посетителя и Род занятий, скопированное из текстовых полей. В предложении <b>Cookie.Expires</b> указываем срок хранения cookie. Если дата не указана, то cookies удаляются сразу, как только пользователь закроет браузер. Например, интернет-магазин может использовать cookie для хранения названий товаров, которые пользователь выбрал и поместил в виртуальную корзину покупок. В таком случае даже если пользователь закроет браузер, не совершив покупки, то при последующем посещении интернет-магазина ему не придется формировать корзину заново.</p>
<p>Вернемся к нашему программному коду. Оператор <b>Add (Cookie1)</b> объекта <b>Response.Cookies</b> добавляет раздел &quot;О посетителе страницы&quot; в cookie-файл.</p>
<p>Теперь давайте найдем этот cookie-файл на винчестере вашего компьютера. Различные браузеры для разных операционных систем пишут cookie-файлы в различные папки. Скорее всего, вы найдете данный cookie в папке <b>C:\Documents and Settings\Администратор\Cookies</b>. Структура имени cookie-файла следующая:</p>
<p><b>Имя_пользователя_компьютера@имя_сервера(1)</b></p>
<p>Поскольку в данном случае речь идет о локальном сервере, то скорее всего имя обсуждаемого в данном разделе cookie-файла будет:</p>
<p><b>администратор@localhost (2).txt</b></p>
<p>Поскольку cookie — это текстовый файл, его можем легко открыть, например, с помощью Блокнота (рис. 89.3).</p>
<p><center><img src='/images/primer89c.jpg'></center><br /><center><b>Рис. 89.3. Содержимое cookie-файла</b></center><br />Как видно, первая строка содержимого cookie-файла — это имя раздела, затем пары &quot;имя — значение&quot;, запрограммированные нами в программе, далее имя сервера и служебная информация.</p>
<p>В заключении замечу, что cookies представляют собой лишь данные, а не программный код, т. е. они не могут стереть или прочитать информацию с компьютера пользователя, поэтому не стоит демонизировать cookie.</p>
<p><strong><a href="/dwn.php?file=primer89.rar" target="_top" title="Скачать исходник к Примеру 89. Чтение/запись cookie-файлов">Скачать исходник к Примеру 89. Чтение/запись cookie-файлов</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer89/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 88. Программирование счетчика посещений сайта с использованием базы данных и объекта Session</title>
		<link>http://vbprog.ru/primer88/</link>
		<comments>http://vbprog.ru/primer88/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 08:24:17 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=316</guid>
		<description><![CDATA[Поставим задачу создать счетчик посещения вашего сайта. Каждое посещение будем фиксировать в виде записи в базе данных MS Access. Чтобы читатель мог реально повторить описываемые действия, подробно их рассмотрим. Запустим офисное приложение MS Access, далее в меню Файл выберем команду Создать &#124; Новая база данных, файл — Web.mdb. Затем создадим &#34;шапку&#34; новой таблицы в режиме [...]]]></description>
			<content:encoded><![CDATA[<p>Поставим задачу создать счетчик посещения вашего сайта. Каждое посещение будем фиксировать в виде записи в базе данных MS Access. Чтобы читатель мог реально повторить описываемые действия, подробно их рассмотрим. Запустим офисное приложение <b>MS Access</b>, далее в меню <b>Файл</b> выберем команду <b>Создать | Новая база данных</b>, файл — <b>Web.mdb</b>. Затем создадим &quot;шапку&quot; новой таблицы в режиме конструктора.</p>
<p>Как видно, автор не предусмотрел поля типа <b>Счетчик</b>, а ведь нам нужно считать именно количество посещений, т. е. количество записей. Сделано это сознательно, т. к. количество записей в базе данных выяснить очень просто, например, с помощью SQL-запроса:</p>
<p><span id="more-316"></span><b>SELECT COUNT(*) FROM (Таблица посещений Web-страницы)</b></p>
<p>Теперь запустим <b>VB2010</b>, закажем новый проект из шаблона <b>Empty ASP.NET Web Application</b>, назовем его <b>Counter</b>. К текущему проекту добавим <b>Web-форму</b>. Для этого в пункте меню <b>Project</b> выберем команду<b>Add New Item</b> и в появившемся окне дважды щелкнем по шаблону <b>Web Form</b>.</p>
<p>Здесь из панели <b>Toolbox</b> перенесем на Web-форму метку <b>Label</b>, куда будем выводить количество посещений данной страницы. Метку <b>Label</b> разместим пока в самом верху формы, но, в конце концов, ее следует разместить скромно в самом низу страницы.</p>
<p>Содержимое файла программной поддержки <b>WebForml.aspx.vb</b> приведено в листинге 888.</p>
<p><b>Листинг 88. Счетчик посещении сайта</b><br />
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Web-приложение, реализующее счетчик посещений сайта с </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; использованием базы данных и объекта Session.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Импортируем пространство имен:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Imports</span><span style="font-size: 9.5pt; font-family: Consolas"> System.Data.OleDb</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Page.Title =<span style="color:#A31515">&quot;Счетчик посещений сайта&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">If</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> Page.IsPostBack = <span style="color:blue">True</span> <span style="color:blue">Then</span> <span style="color:blue">Exit Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; При первой загрузке страницы:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216;Выясняем IP-адрес посетителя сайта:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> IP_</span><span style="font-size: 9.5pt; font-family: Consolas">адрес<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = Request.UserHostAddress</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span style="font-size: 9.5pt; font-family: Consolas"> URL_адрес <span style="color:blue">As</span> <span style="color:blue">String</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Try</span> <span style="color:green">&#8216; Определение с какой Web-стр. вы сюда пришли:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;URL_адрес = Request.UrlReferrer.AbsoluteUri</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;Вы пришли на эту&quot;</span> &amp;<span style="color:#A31515">&quot; страницу со страницы &quot;</span> &amp; URL_адрес)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Catch</span> ex1 <span style="color:blue">As</span> System.<span style="color:#2B91AF">NullReferenceException</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Если пришли на эту страницу набрав URL-адрес</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; в адресной строке браузера:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; URL_адрес =<span style="color:#A31515">&quot;Адресная строка браузера&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;Вы пришли на эту &quot;</span> &amp;<span style="color:#A31515">&quot;страницу набрав URL-адрес в адресной строке&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;Вы пришли на эту стра&quot;</span> &amp; <span style="color:#A31515">&quot;ницу с IP-адреса &quot;</span> &amp; IP_адрес)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; МАНИПУЛЯЦИИ С БД О ПОСЕЩЕНИИ ПОЛЬЗОВАТЕЛЯ:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Строка подключения:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> СтрокаПодкл <span style="color:blue">As</span><span style="color:blue">String</span> = <span style="color:#A31515">&quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=&quot;</span> &amp; Server.MapPath(<span style="color:#A31515">&quot;Web.mdb&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создание экземпляра объекта Connection</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> CONNECTION = <span style="color:blue">New</span><span style="color:#2B91AF">OleDbConnection</span>(СтрокаПодкл)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Try</span>&nbsp; <span style="color:green">&#8216; Открытие подключения:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONNECTION.Open()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Catch</span> ex2 <span style="color:blue">As</span><span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;&quot;</span> &amp; ex2.Message)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> SQL_запрос <span style="color:blue">As</span><span style="color:blue">String</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> COMMAND <span style="color:blue">As</span><span style="color:blue">New</span> <span style="color:#2B91AF">OleDbCommand</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; ЕСЛИ ОБ ЭТОМ ПОСЕЩЕНИИ ЕЩЕ НЕТ ЗАПИСИ:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">If</span> Page.Session(<span style="color:#A31515">&quot;ЕСТЬ ЛИ ЗАПИСЬ ОБ ЭТОМ ПОСЕЩЕНИИ?&quot;</span>) &lt;&gt; <span style="color:#A31515">&quot;ДА&quot;</span><span style="color:blue">Then</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; ДОБАВЛЕНИЕ ЗАПИСИ В БД О ПОСЕЩЕНИИ:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ДАТА<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = Now</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Строка</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> SQL-</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">запроса</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">SQL_запрос =</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;INSERT INTO (Таблица посещений Web-страницы) &quot;</span> &amp;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;((Дата посещения), (IP-адрес посетителя), &quot;</span> &amp;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;(С какой страницы пришли)) VALUES (&#8216;&quot;</span> &amp; ДАТА &amp;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;&#8217;, &#8216;&quot;</span> &amp; IP_адрес &amp;<span style="color:#A31515">&quot;&#8217;, &#8216;&quot;</span> &amp; URL_адрес &amp;<span style="color:#A31515">&quot;&#8217;)&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создание объекта Command с заданием SQL-запроса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMAND.CommandText = SQL_запрос</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Для добавления записи эта команда обязательна:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMAND.Connection = CONNECTION</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Try</span> <span style="color:green">&#8216; Выполнение команды SQL, то есть ЗАПИСЬ В БД:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMAND.ExecuteNonQuery()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;В таблицу БД посещений добавлена запись&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; ТЕПЕРЬ ПОЯВИЛАСЬ ЗАПИСЬ ОБ ЭТОМ ПОСЕЩЕНИИ:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Page.Session(</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#A31515">&quot;ЕСТЬ ЛИ ЗАПИСЬ ОБ ЭТОМ ПОСЕЩЕНИИ?&quot;</span>) =<span style="color:#A31515">&quot;ДА&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Catch</span> ex3 <span style="color:blue">As</span><span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;&quot;</span> &amp; ex3.Message)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">If</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; ОПРЕДЕЛЕНИЕ КОЛИЧЕСТВА ЗАПИСЕЙ О ПОСЕЩЕНИИ:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216;Новый SQL-запрос — это одна ячейка в новой таблице:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL_запрос =<span style="color:#A31515">&quot;SELECT COUNT(*) FROM (Таблица посещений Web-страницы)&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMAND.CommandText = SQL_запрос</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; COMMAND.Connection = CONNECTION</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; ExecuteScalar выполняет запрос и возвращает первую</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; колонку первого ряда таблицы запроса:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> КОЛ_ВО <span style="color:blue">As</span><span style="color:blue">Integer</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; КОЛ_ВО = COMMAND.ExecuteScalar()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Catch</span> ex4 <span style="color:blue">As</span><span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;&lt;br&gt;&lt;br&gt;&quot;</span> &amp; ex4.Message)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CONNECTION.Close()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Label1.Text =<span style="color:#A31515">&quot;Количество посещений страницы = &quot;</span> &amp; КОЛ_ВО</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, программирование счетчика посещений реализовано при обработке событий загрузки Web-страницы <b>Page_Load</b>, причем при ее первой загрузке, когда <b>IsPostBack = False</b>. Используя объект <b>Request</b>, определяем IP-адрес посетителя данной Web-страницы. Далее с помощью этого же объекта <b>Request</b> и блока <b>Try&#8230;Catch</b> определяем, с какой Web-страницы пользователь перешел на данную страницу. Если попытка (<b>Try</b>) определить оказалось неудачной, то управление переходит на <b>Exception</b> и делается вывод, что пользователь оказался на данной странице, набрав URL-адрес в адресной строке своего браузера. Для вывода текста в форму использован метод <b>Response.Write</b>. Роль этой печати здесь вспомогательная, как бы отладочная. Читатель может ее закомментировать или вовсе удалить.</p>
<p>Далее происходит подготовка к записи строки из трех полей в базу данных. Вначале задаем строку подключения к базе данных, затем — непосредственное подключение <b>Connection</b>. Далее перед непосредственной записью строки посещения в базу данных происходит проверка, есть ли (зарегистрирована ли уже) запись об этом посещении. Может быть, пользователь в своем браузере просто обновил страницу путем нажатия клавиши <b>&lt;F5&gt;</b>. Вы можете себе представить, читатель, какой соблазн появляется у пользователя нажимать <b>&lt;F5&gt;</b>, если он видит, что после каждого нажатия увеличивается количество посещений сайта! Чтобы избежать этого, воспользуемся объектом страницы <b>Page.Session</b>.</p>
<p>В технологии ASP.NET каждое Web-приложение при обращении к нему пользователя (клиента) создает объект <b>Page.Session</b>, этот объект называют сессией или сеансом пользователя. Объект <b>Session</b> содержит в себе методы для создания коллекции данных. Причем созданная коллекция данных на одной странице Web-приложения оказывается доступной на любой другой странице данного приложения. Даже если пользователь перешел на другое Web-приложение (на другой Web-узел), а затем вернулся в данное приложение, то исходная коллекция данных сессии будет сохранена. Она будет сохранена до тех пор, пока пользователь не закрыл свой Web-браузер. Однако время жизни (лимит времени) сессии все же ограничено параметром <b>timeout</b>. По умолчанию время жизни равно 20 минутам, его можно регулировать и файле программной поддержки свойством объекта <b>Session.Timeout</b>.</p>
<p>Программировать создание сессии пользователя и получение из нее информации, доступной во всем приложении, несложно. Например, включение (добавление) в коллекцию данных сессии пар &quot;имя (ключ) — значение&quot; можно программировать таким образом: <b>Session (&quot;Имя пользователя&quot;) =&quot;Андрей&quot;</b> или <b>Session.Add (&quot;Имя пользователя&quot;, &quot;Андрей&quot;)</b>. На любой Другой Странице данного Web-приложения имеем доступ к данным, записанным в коллекцию данных сессии: <b>Label1.Text = Session(&quot;Имя пользователя&quot;)</b> или <b>Label1.Text = Session.item (&quot;Имя пользователя&quot;)</b>. Таким образом можно обмениваться данными между страницами Web-приложения.</p>
<p>Теперь вернемся к добавлению в БД записи о данном посещении страницы. После команды <b>ExecuteNonQuery</b> запись в базу данных будет добавлена, затем сразу после этого включаем в коллекцию текущей сессии пару <b>Page.Session (&quot;есть ли запись об этом посещении?&quot;) =&quot;да&quot;</b>. Теперь эта пара будет существовать не только после нажатия клавиши <b>&lt;F5&gt;</b> (команда в браузере Обновить страницу), но и после того, как пользователь покинет данное Web-приложение и затем вернется в него опять. (Но при этом не будет закрывать свой Web-браузер.) Поэтому в программном коде, прежде чем добавлять запись в базу данных о посещении пользователя, предусмотрена проверка с помощью коллекции объекта <b>Session</b>. Фрагмент работы счетчика посещений представлен на рис. 88.</p>
<p><center><img src='/images/primer88.jpg'></center><br /><center><b>Рис. 88. Фрагмент работы Web-страницы, подсчитывающей посещеня</b></center><br />Теперь давайте проверим полученный IP-адрес. Является ли он действительно адресом нашего локального компьютера в Интернете? Для этого на панели задач вашего компьютера найдем значок <b>Подключение по локальной сети</b>. В контекстном меню укажем пункт <b>Состояние</b>, здесь на вкладке <b>Поддержка</b> увидим свой правильный IP-адрес. Он будет отличаться от выведенного в форму. Почему? Дело в том, что фрагмент работы данной программы получен на локальном сервере, поэтому и IP-адрес мы получили как адрес из внутренней подсети. После того как проект Web-приложения будет скопирован на удаленный сервер, предоставляющий Web-хостинг, мы получим корректный IP-адрес. Как указывалось ранее, три первых строки, выведенные в форму, носят отладочный характер и могут быть удалены из программного кода.</p>
<p><strong><a href="/dwn.php?file=primer88.rar" target="_top" title="Скачать исходник к Примеру 88. Программирование счетчика посещений сайта с использованием базы данных и объекта Session">Скачать исходник к Примеру 88. Программирование счетчика посещений сайта с использованием базы данных и объекта Session</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer88/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 87. Чтение/запись текстового файла Web-приложением</title>
		<link>http://vbprog.ru/primer87/</link>
		<comments>http://vbprog.ru/primer87/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 07:56:38 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=313</guid>
		<description><![CDATA[Активная Web-страница может сохранять, а также читать данные на диске в каких-либо файлах, в том числе текстовых. Принцип чтения/записи на диск текстовых файлов такой же, как и в Windows-приложениях, однако есть некоторые особенности. Поставим задачу написать Web-приложение, читающее текстовый файл в текстовое поле, пользователь имеет возможность редактировать текст и сохранять его в том же файле. [...]]]></description>
			<content:encoded><![CDATA[<p>Активная Web-страница может сохранять, а также читать данные на диске в каких-либо файлах, в том числе текстовых. Принцип чтения/записи на диск текстовых файлов такой же, как и в Windows-приложениях, однако есть некоторые особенности. Поставим задачу написать Web-приложение, читающее текстовый файл в текстовое поле, пользователь имеет возможность редактировать текст и сохранять его в том же файле.</p>
<p>Для решения поставленной задачи запустим <b>VB2010</b>, закажем новый проект из шаблона <b>Empty ASP.NET Web Application</b>, имя Web-приложения — <b>RW_txt</b>. К текущему проекту добавим <b>Web-форму</b>. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем шаблон<b>Web Form</b>.</p>
<p><span id="more-313"></span>В конструкторе формы из панели <b>Toolbox</b> перетащим мышью текстовое поле <b>TextBox</b> и две командные кнопки <b>Button</b>. Содержимое файла программной поддержки приведено в листинге 87.</p>
<p><b>Листинг 87. Чтение/запись текстового файла</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Чтение-запись текстового файла Web-приложением. Web-приложение, </span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; читающее текстовый файл в текстовое поле, пользователь имеет </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; возможность редактировать текст и сохранять его в том же файле</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span style="font-size: 9.5pt; font-family: Consolas"> filename <span style="color:blue">As</span> <span style="color:blue">String</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Чтобы русские буквы читались нормально,</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; объявляем объект КОДИРОВКА:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> КОДИРОВКА <span style="color:blue">As</span> System.Text.<span style="color:#2B91AF">Encoding</span> = System.Text.<span style="color:#2B91AF">Encoding</span>.GetEncoding(1251)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Protected</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Page.Title =<span style="color:#A31515">&quot;Здесь кодировка Win1251&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Button1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Читать</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button2.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Сохранить</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Разрешаем многострочие</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.TextMode = <span style="color:#2B91AF">TextBoxMode</span>.MultiLine</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filename = Request.PhysicalApplicationPath &amp; <span style="color:#A31515">&quot;txt.txt&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span></span><span style="font-size: 9.5pt; font-family: Consolas">Чтение</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Try</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Создаем экземпляр StreamReader для чтения из файла:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ЧИТАТЕЛЬ<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> IO.<span style="color:#2B91AF">StreamReader</span>(filename,</span>КОДИРОВКА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TextBox1.Text = </span><span style="font-size: 9.5pt; font-family: Consolas">ЧИТАТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.ReadToEnd()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">ЧИТАТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Close()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Catch</span> Exc <span style="color:blue">As</span> System.IO.<span style="color:#2B91AF">FileNotFoundException</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Response.Write(<span style="color:#A31515">&quot;Нет такого файла &lt;br&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Catch</span> Ex <span style="color:blue">As</span><span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Отчет о других ошибках:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Response.Write(<span style="color:#A31515">&quot;Ошибка чтения файла &quot;</span> &amp; Ex.Message &amp; <span style="color:#A31515">&quot; &lt;br&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Private</span> <span style="color:blue">Sub</span></span><span style="font-size: 9.5pt; font-family: Consolas">Сохранение</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button2.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Try</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216;Созд экземпляра StreamWriter для записи в файл:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ПИСАТЕЛЬ<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">New</span> IO.<span style="color:#2B91AF">StreamWriter</span>(filename,<span style="color:blue">False</span>, </span>КОДИРОВКА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">ПИСАТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Write(TextBox1.Text)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">ПИСАТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Close()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Catch</span><span style="font-size: 9.5pt; font-family: Consolas"> EXC <span style="color:blue">As</span> <span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Отчет о всех возможных ошибках:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">Response.Write(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Ошибка записи файла</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> &quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> &amp; EXC.Message &amp; <span style="color:#A31515">&quot; &lt;br&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span><span lang="EN-US">&nbsp;</span></p>
<p>В начале программного кода объявляем имя файла <b>filename</b> и объект кодировка в качестве внешних переменных по отношению к процедурам класса, чтобы они были видны из всех процедур обработки событий. При загрузке страницы <b>Page_Load</b> задаем надписи на кнопках <b>Button1</b> и <b>Button2</b>, а текстовое поле переводим в режим <b>Multiline</b>, т. е. разрешаем размещать текст на нескольких строчках. Далее, поскольку мы не можем разрешить пользователю выбирать папку на удаленном сервере для размещения файла, в качестве такой папки указываем папку, где расположено текущее Web-приложение. При этом мы не сможем воспользоваться методом <b>GetCurrentDirectory</b> класса<b>IO.Directory</b>, поскольку эта функция нам укажет на системную папку <b>C:\Windows\system32</b>. Поэтому воспользуемся методом <b>PhysicaLApplicationPath</b> объекта <b>Request</b>. При обработке события &quot;щелчок на кнопке&quot; Читать читаем текстовый файл, используя объект StreamReader. Также как и при записи файла, данная процедура ничем не отличается от программирования ее в Windows-приложении.</p>
<p>Однако существует большая вероятность получить отказ в доступе к файлу. Операционная система, в зависимости от настроек, может выдать сообщение об ошибке сервера в вашем приложении вследствие отказа в доступе к вашему текстовому файлу. То есть можем получить запрет на запись файла на диск сервера. В этом сообщении об ошибке указано, что следует на вкладке <b>Безопасность</b> свойств текстового файла разрешить чтение/запись. Однако весьма вероятна ситуация, когда, щелкнув правой кнопкой мыши на изображении файла txt.txt и выбрав команду <b>Свойства</b>, мы получим свойства файла в таком виде, как показано на рис. 87.1</p>
<p><center><img src='/images/primer87a.jpg'></center><br /><center><b>Рис. 87.1. Вкладки окна свойств файла</b></center><br />Как видно, в окне свойств файла txt.txt отсутствует вкладка <b>Безопасность</b>. Чтобы ее получить, следует в Проводнике выбрать пункт меню <b>Сервис | Свойства папки</b> и в появившемся окне на вкладке Вид снять флажок <b>Использовать простой общий доступ к файлам</b>. Далее — щелчок на кнопках <b>Применить</b> и<b>ОК</b> (рис. 87.2).</p>
<p><center><img src='/images/primer87b.jpg'></center><br /><center><b>Рис. 87.2. Вкладки окна свойств папки</b></center><br />Теперь опять перейдем к свойствам файла <b>txt.txt</b>. Вкладка <b>Безопасность</b>, как видно, уже появилась. На вкладке <b>Безопасность</b> щелкнем на кнопке Добавить, перейдя таким образом в окно <b>Выбор</b>. Далее нажмем кнопки Дополнительно, Поиск и, выбрав в появившемся списке имя пользователя ASP.NET, щелкнем на кнопке ОК. Теперь на вкладке Свойства в строках <b>Чтение</b> и <b>Запись</b> установим флажок разрешения и нажмем кнопки <b>Применить</b> и <b>OK</b> (рис. 87.3).</p>
<p><center><img src='/images/primer87c.jpg'></center><br /><center><b>Рис. 87.3. Вкладка Безопасность окна свойств файла</b></center><br /><center><img src='/images/primer87d.jpg'></center><br /><center><b>Рис. 87.4. Фрагмент работы Web-страницы, осуществляющей чтение/запись текстового файла</b></center><br />Теперь еще раз запускаем Web-приложение и убеждаемся в его корректной работе. На рис. 87.4 показан фрагмент работы созданной Web-страницы.</p>
<p>Используя инструмент чтения/записи текстового файла, можно обмениваться данными между страницами Web-приложения, организовать форум на Web-сайте, гостевую книгу, счетчик посещений и пр.</p>
<p><strong><a href="/dwn.php?file=primer87.rar" target="_top" title="Скачать исходник к Примеру 87. Чтение/запись текстового файла Web-приложением">Скачать исходник к Примеру 87. Чтение/запись текстового файла Web-приложением</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer87/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 86. Отображение в Web-форме хэш-таблицы</title>
		<link>http://vbprog.ru/primer86/</link>
		<comments>http://vbprog.ru/primer86/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 07:11:36 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=311</guid>
		<description><![CDATA[Хэш-таблица — это таблица из двух столбцов, один из них содержит ключи, а второй — значения. То есть каждая строка в этой таблице образует пару &#34;ключ — значение&#34;. Имея ключ в хэш-таблице, можно быстро найти значение. Хэш-таблицу можно назвать таблицей соответствий. Простейшим примером хэш-таблицы является таблица телефонов, которая участвовала в предыдущем разделе, однако там мы [...]]]></description>
			<content:encoded><![CDATA[<p>Хэш-таблица — это таблица из двух столбцов, один из них содержит ключи, а второй — значения. То есть каждая строка в этой таблице образует пару &quot;ключ — значение&quot;. Имея ключ в хэш-таблице, можно быстро найти значение. Хэш-таблицу можно назвать таблицей соответствий. Простейшим примером хэш-таблицы является таблица телефонов, которая участвовала в предыдущем разделе, однако там мы программировали ее просто как два массива. Если эти два массива поместить в хэш-таблицу, то ключом в данном случае было бы <b>ФИО</b>, а значением — <b>номер телефона</b>. При этом программирование поиска значения по ключу оказалось бы тривиальной задачей, операция добавления и удаления пары также упрощается, поскольку хэш-таблица — это объект, который содержит соответствующие эти и другие методы. В реальной жизни много разнообразных примеров представления данных в виде хэш-таблицы. Например, таблица, где расширения файлов (txt, jpg, mdb, xls) являются ключами, а соответствующими значениями — программы, которые открывают файлы с такими расширениями (Notepad.exe, Pbrush.exe, MSAccess.exe, Excel.exe). Следующим примером является англорусский и другие словари. База данных доменных имен, которая доменному имени сопоставляет IP-адрес. По принципу хэш-таблицы организованы объекты ViewState И Session технологии ASP.NET.</p>
<p><span id="more-311"></span>Поставим следующую задачу, сопоставим в хэш-таблице государства в качестве ключей, а их столицы — в качестве значений. Далее, используя элемент управления <b>GridView</b>, выведем эту хэш-таблицу на Web-страницу. Для этого запустим <b>VB2010</b>, закажем новый проект шаблона <b>Empty ASP.NET Web Application</b>, в поле <b>Name</b> укажем имя <b>Hash_Grid</b>. К текущему проекту добавим <b>Web-форму</b>. Для этого в пункте меню<b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем шаблон <b>Web Form</b>.</p>
<p>Далее перетащим в форму из панели <b>Toolbox</b> (из подраздела <b>Data</b>) элемент управления <b>GridView</b>. Содержимое файла программной поддержки <b>WebForm1.aspx.vb</b> приведено в листинге 86.</p>
<p><b>Листинг 86. Хэш-таблица в Web-форме</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Вывод в Web-форму хэш-таблицы. В данной Web-странице использована</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; хэш-таблица для того, чтобы поставить в соответствие государства</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; их столицам. То есть в качестве ключей имеем государства, а их</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; столицы — в качестве значений. Далее используя элемент управления</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; GridView, программа выводит эту хэш-таблицу на Web-страницу. </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Page.Title =<span style="color:#A31515">&quot;Пример хэш-таблицы&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> h = <span style="color:blue">New</span> System.Collections.<span style="color:#2B91AF">Hashtable</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">h(<span style="color:#A31515">&quot;Украина&quot;</span>) = <span style="color:#A31515">&quot;Киев&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h.Add(<span style="color:#A31515">&quot;Россия&quot;</span>,<span style="color:#A31515">&quot;Москва&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; h(<span style="color:#A31515">&quot;Белоруссия&quot;</span>) = <span style="color:#A31515">&quot;Минск&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> dt <span style="color:blue">As</span><span style="color:blue">New</span> <span style="color:#2B91AF">DataTable</span><span style="color:green">&#8216; Заполнение шапки таблицы:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt.Columns.Add(<span style="color:#A31515">&quot;ГОСУДАРСТВА&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt.Columns.Add(<span style="color:#A31515">&quot;СТОЛИЦЫ&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"></span><span style="font-size: 9.5pt; font-family: Consolas">ПЕРЕЧИСЛИТЕЛЬ<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:#2B91AF">IDictionaryEnumerator</span> = h.GetEnumerator</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">While</span> </span><span style="font-size: 9.5pt; font-family: Consolas">ПЕРЕЧИСЛИТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.MoveNext = <span style="color:blue">True</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt.Rows.Add(<span style="color:blue">New</span> <span style="color:blue">String</span>() {</span><span style="font-size: 9.5pt; font-family: Consolas">ПЕРЕЧИСЛИТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Key,</span><span style="font-size: 9.5pt; font-family: Consolas">ПЕРЕЧИСЛИТЕЛЬ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">.Value})</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">While</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Немного другое свойство, чем в WindowsApplication:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">GridView1.Caption = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Таблица государств</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.BorderWidth = WebControls.<span style="color:#2B91AF">Unit</span>.Pixel(2)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.BorderColor = Drawing.<span style="color:#2B91AF">Color</span>.Gray</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Источник данных для</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> GridView:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dt</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Этого нет в</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> WindowsApplication:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Здесь при обработке события загрузки Web-страницы создается объект класса <b>Hashtable</b>. Хэш-таблица заполняется тремя парами &quot;код — значение&quot;, причем, как показано в программном коде, допустимы обе формы записи: через присваивание и посредством метода <b>Add</b>. Далее создается вспомогательный объект <b>DataTable</b>, который следует заполнить данными из хэш-таблицы. Хэш-таблица имеет метод <b>GetEnumerator</b>, который возвращает перечислитель типа <b>IdictionaryEnumerator</b>. Перечислитель позволяет перемещаться по рядам таблицы в цикле <b>While</b> и таким образом получить все пары из хэш-таблицы. В этом цикле происходит заполнение объекта <b>DataTable</b>. Далее, также как и в предыдущем примере, для <b>GridView1</b> указываем в качестве источника данных заполненный объект <b>DataTable</b>. Пример работы данной Web-страницы показан на рис. 86.</p>
<p><center><img src='/images/primer86.jpg'></center><br /><center><b>Рис. 86. Фрагмент работы Web-страницы с хэш-таблицей</b></center><br />В заключение отметим, что хэш-таблицу называют ассоциативным массивом, но в этом &quot;массиве&quot; роль индекса играет ключ. Для реализации хэш-таблицы можно было бы использовать обычный одномерный массив, в котором элементы с четным индексом являются ключами, а с нечетным — значениями. Однако для реализации трех основных операций с хэш-таблицей: добавления новой пары, операцию поиска и операцию удаления пары по ключу потребовалось бы отлаживать довольно-таки много строчек программного кода.</p>
<p><strong><a href="/dwn.php?file=primer86.rar" target="_top" title="Скачать исходник к Примеру 86. Отображение в Web-форме хэш-таблицы">Скачать исходник к Примеру 86. Отображение в Web-форме хэш-таблицы</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer86/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 85. Отображение табличных данных в Web-форме с помощью элемента управления GridView</title>
		<link>http://vbprog.ru/primer85/</link>
		<comments>http://vbprog.ru/primer85/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 10:47:09 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=309</guid>
		<description><![CDATA[В данном примере покажем, как можно вывести какие-либо данные, например, два строковых массива в виде таблицы в Web-форму с помощью элемента управления GridView (просмотр или обзор сетки данных в таблице) и объекта DataTable. Мы решали подобную задачу для Windows-приложения. Между тем для Web-приложения это также типичная задача, но она имеет некоторые особенности, в частности, и [...]]]></description>
			<content:encoded><![CDATA[<p>В данном примере покажем, как можно вывести какие-либо данные, например, два строковых массива в виде таблицы в Web-форму с помощью элемента управления <b>GridView</b> (просмотр или обзор сетки данных в таблице) и объекта <b>DataTable</b>. Мы решали подобную задачу для Windows-приложения. Между тем для Web-приложения это также типичная задача, но она имеет некоторые особенности, в частности, и там и здесь в выводе таблицы принимают участие похожие элементы управления (<b>DataGridView</b> и <b>GridView</b>), но свойства и методы этих объектов в разных приложениях немного отличаются. В данной задаче таблица телефонов представлена в виде двух строковых массивов. Требуется минимальными усилиями вывести в Web-форму эти массивы в виде таблицы.</p>
<p><span id="more-309"></span>Для решения данной задачи запускаем <b>VB2010</b>, заказываем новый проект из шаблона <b>Empty ASP.NET Web Application</b>, в поле <b>Name</b> вводим имя <b>TabGrdWeb</b>. К текущему проекту добавим <b>Web-форму</b>. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне дважды щелкнем шаблон <b>Web Form</b>.</p>
<p>Далее перетащим в форму из панели <b>Toolbox</b> (из подраздела <b>Data</b>) элемент управления <b>GridView</b>. Содержимое файла программной поддержки <b>WebForm1.aspx.vb</b> приведено в листинге 85.</p>
<p><b>Листинг 85 Вывод табличных данных в Web-форму с помощью элемента управления GridView</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Вывод табличных данных в Web-форму с помощью элемента управления</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; GridView. В данной Web-странице организован вывод двух строковых</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; массивов в таблицу в Web-форму с помощью элемента управления </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; GridView </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">и объекта</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> DataTable.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Page.Title =<span style="color:#A31515">&quot;Вывод таблицы в Web-форму&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> Imena() <span style="color:blue">As</span><span style="color:blue">String</span> = {<span style="color:#A31515">&quot;Андрей — раб&quot;</span>, <span style="color:#A31515">&quot;ЖЭК&quot;</span>,<span style="color:#A31515">&quot;Мама — дом&quot;</span>, <span style="color:#A31515">&quot;Карапузова Таня&quot;</span>}</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Dim</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> Tel() <span style="color:blue">As</span> <span style="color:blue">String</span> = {<span style="color:#A31515">&quot;274-88-17&quot;</span>, <span style="color:#A31515">&quot;22-345-72&quot;</span>, <span style="color:#A31515">&quot;570-38-76&quot;</span>,<span style="color:#A31515">&quot;201-72-23-</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">прямой моб</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">}</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> dt <span style="color:blue">As</span><span style="color:blue">New</span> <span style="color:#2B91AF">DataTable</span><span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Заполнение шапки таблицы</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt.Columns.Add(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">ИМЕНА</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt.Columns.Add(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">НОМЕРА ТЕЛЕФОНОВ</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Заполнение клеток (ячеек) таблицы:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">For</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> i<span style="color:blue">As</span> <span style="color:blue">Short</span> = 0<span style="color:blue">To</span> 3</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dt.Rows.Add(<span style="color:blue">New</span> <span style="color:blue">String</span>() {Imena(i), Tel(i)})</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Next</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Немного другое свойство, чем в WindowsApplication:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">GridView1.Caption = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Таблица телефонов</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.BorderWidth = WebControls.<span style="color:#2B91AF">Unit</span>.Pixel(2)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.BorderColor = Drawing.<span style="color:#2B91AF">Color</span>.Gray</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataSource = dt</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Этого нет в</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> WindowsApplication:</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GridView1.DataBind()</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Содержание программного кода очевидно. Вначале инициализируются два строковых массива: массив имен и массив телефонов, далее с помощью этих массивов заполняются ячейки объекта <b>DataTable</b>. Затем этот объект назначается нами источником данных <b>DataSource</b> для сетки данных <b>GridView1</b>. Фрагмент работы данной Web-страницы показан на рис. 85.</p>
<p><center><img src='/images/primer85.jpg'></center><br /><center><b>Рис. 85. Фрагмент работы Web-страницы с табличными данными</b></center><br />Замечу, что данную таблицу можно было бы вывести с помощью элемента управления<b>DataList</b>, однако в этом случае пришлось бы задавать шаблоны <b>Template</b> для каждой колонки в ASPX-файле, что на субъективный взгляд автора не технологично.</p>
<p><strong><a href="/dwn.php?file=primer85.rar" target="_top" title="Скачать исходник к Примеру 85. Отображение табличных данных в Web-форме с помощью элемента управления GridView">Скачать исходник к Примеру 85. Отображение табличных данных в Web-форме с помощью элемента управления GridView</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 84. Передача значений элементов управления на другую Web-страницу с помощью объекта PreviousPage</title>
		<link>http://vbprog.ru/primer84/</link>
		<comments>http://vbprog.ru/primer84/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 09:46:28 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=306</guid>
		<description><![CDATA[Покажем, как можно решить задачу из предыдущего примера методами объекта PreviousPage. Итак, на начальной Web-странице имеем командную кнопку ПЕРЕХОД и текстовое поле, которое заполняет пользователь. После щелчка на кнопке происходит переход на другую Web-страницу. На новой странице отображается содержимое текстового поля и надпись на кнопке из предыдущей страницы. Для решения этой задачи запустим VB2010, закажем [...]]]></description>
			<content:encoded><![CDATA[<p>Покажем, как можно решить задачу из предыдущего примера методами объекта PreviousPage. Итак, на начальной Web-странице имеем командную кнопку ПЕРЕХОД и текстовое поле, которое заполняет пользователь. После щелчка на кнопке происходит переход на другую Web-страницу. На новой странице отображается содержимое текстового поля и надпись на кнопке из предыдущей страницы.</p>
<p>Для решения этой задачи запустим VB2010, закажем новый проект из шаблона Empty ASP.NET Web Application. Далее добавим в текущий проект начальную Web-форму, для этого в пункте меню Project выполним команду Add New Item и в появившемся окне выберем шаблон Web Form. В окне Solution Explorer переименуем (команда Rename в контекстном меню) новую появившуюся форму из WebForm1.aspx в ishod.aspx. На вкладке конструктора формы из панели элементов Toolbox перенесем командную кнопку Button и текстовое поле TextBox. На вкладке программного кода (клавиша &lt;F7&gt;) напишем текст, приведенный в листинге 84.1.</p>
<p><span id="more-306"></span><b>Листинг 84.1. Заполнение данных на первой Web-cтранице</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; На начальной Web-странице имеем командную кнопку с надписью</span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; &quot;ПЕРЕХОД&quot; и текстовое поле, которое заполняет пользователь, после</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; щелчка на кнопке происходит переход на другую Web-страницу. </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; На новой странице отображается содержимое текстового поля и </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; надпись на кнопке из предыдущей страницы.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.Text = <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">ПЕРЕХОД</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Button1.PostBackUrl = <span style="color:#A31515">&quot;res.aspx&quot;</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Button1_Click(<span style="color:blue">ByVal</span> sender<span style="color:blue">As</span> <span style="color:blue">Object</span>,<span style="color:blue">ByVal</span> e <span style="color:blue">As</span><span style="color:#2B91AF">EventArgs</span>) <span style="color:blue">Handles</span> Button1.Click</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Response.Redirect(&quot;res.aspx&quot;)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, при обработке события загрузки формы присваиваем надписи на кнопке строку &quot;ПЕРЕХОД&quot;, а свойству кнопки PostBackurl назначаем URL-адрес, на который должно перейти управление при щелчке на командной кнопке. Вообще говоря, переход на другую Web-форму можно программировать, так же обрабатывая событие &quot;щелчок на кнопке&quot; и используя при этом метод <b>Redirect</b> объекта <b>Response</b>, как показано в комментарии.</p>
<p>Замечу, что Web-формы <b>res.aspx</b>, на которую имеем ссылку в программном коде, еще нет в нашем проекте. Добавим эту форму так же, как добавили исходную форму, т. е. используя в пункте меню <b>Project</b> команду <b>Add New Item</b>, выберем шаблон новой формы <b>Web Form</b>. В окне <b>Solution Explorer</b> переименуем новую появившуюся форму в <b>res.aspx</b>. На вкладке программного кода <b>res.aspx.vb</b> напишем текст, приведенный в листинге 84.2.</p>
<p><b>Листинг 84.2. Вторая WEB-страница</b><br />
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm2</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Inherits</span> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> T</span><span style="font-size: 9.5pt; font-family: Consolas">Поле<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:#2B91AF">TextBox</span> = <span style="color:blue">CType</span>(Page.PreviousPage.FindControl(<span style="color:#A31515">&quot;TextBox1&quot;</span>),<span style="color:#2B91AF">TextBox</span>)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Кнопка<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:#2B91AF">Button</span> = <span style="color:blue">CType</span>(Page.PreviousPage.FindControl(<span style="color:#A31515">&quot;Button1&quot;</span>),<span style="color:#2B91AF">Button</span>)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Значения элементов управления могут быть также</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<span style="color:green">&#8216; получены с помощью объекта Request:</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Dim S1 As String = Request.Item(&quot;TextBox1&quot;)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; Dim S2 As String = Request.Item(&quot;Button1&quot;)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Response.Write(<span style="color:#A31515">&quot;На начальной странице: &lt;br /&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot; &#8212; cодержимое текстового поля: &quot;</span> + TПоле.Text +<span style="color:#A31515">&quot;&lt;br /&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot; &#8212; надпись на кнопке: &quot;</span> + Кнопка.Text)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Catch</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> ex <span style="color:blue">As</span> <span style="color:#2B91AF">Exception</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">Начальная</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> Web-</span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">страница должна</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515"> &quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> +</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;содержать&lt;br /&gt;текстовое поле и командную </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> +</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color:#A31515">&quot;</span></span><span style="font-size: 9.5pt; font-family: Consolas; color: #A31515">кнопку</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: #A31515">.&lt;br /&gt;&quot;</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> + ex.Message)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Try</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из данного программного кода, новая, результирующая форма не содержит ни одного элемента управления. Вывод текста в форму осуществляем спомощью метода <b>Write</b> объекта <b>Response</b>. Чтобы вывести в новую форму значения элементов управления первоначальной формы, воспользуемся методом <b>FindControl</b> объекта <b>PreviousPage</b>. На вход этого метода подадим идентификатор (<b>ID</b>) соответствующего элемента управления, указанного в HTML-разметке первоначальной формы <b>ishod.aspx</b>. Функция <b>FindControl</b> возвращает объект класса <b>Web.UI.Control</b>, его удобно конвертировать в объект класса <b>TextBox</b> или <b>Button</b> с помощью функции<b>CTуре()</b>. В комментарии показано, как можно получить значения элементов управления первоначальной формы также с помощью объекта <b>Request</b>.</p>
<p>Перед тем как запустить созданный проект на выполнение, в окне <b>Solution Explorer</b> назначим в качестве стартовой страницы проекта файл <b>ishod.aspx</b>, для этого в контекстном меню для этого файла выберем команду <b>Set As Start Page</b>. На рис. 84.1 показана исходная форма <b>ishod.aspx</b> с текстовым полем, подлежащим заполнению, и командной кнопкой.</p>
<p><center><img src='/images/primer84a.jpg'></center><br /><center><b>Рис. 84.1. Первоначальная форма</b></center><br /><center><img src='/images/primer84b.jpg'></center><br /><center><b>Рис. 84.2. Результирующая форма</b><br />&nbsp;</center>На рис. 84.2 продемонстрирована результирующая форма, где отображены значения элементов управления первоначальной формы.</p>
<p><strong><a href="/dwn.php?file=primer84.rar" target="_top" title="Скачать исходник к Примеру 84. Передача значений элементов управления на другую Web-страницу с помощью объекта PreviousPage">Скачать исходник к Примеру 84. Передача значений элементов управления на другую Web-страницу с помощью объекта PreviousPage</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer84/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пример 83. Передача данных формы на другую Web-страницу методами класса Request</title>
		<link>http://vbprog.ru/primer83/</link>
		<comments>http://vbprog.ru/primer83/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 08:54:40 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[VB2010 на примерах]]></category>

		<guid isPermaLink="false">http://vbprog.ru/?p=350</guid>
		<description><![CDATA[Имеется возможность предложить пользователю заполнить в форме текстовые поля, установить в какое-либо положение переключатели, выбрать какой-либо элемент из списка и т. д., т. е. выполнить какие-либо манипуляции с элементами управления, а затем перейти на другую Web-страницу и отобразить на этой новой странице измененные свойства элементов управления предыдущей страницы. Замечу, что это — типичная ситуация. Поставим [...]]]></description>
			<content:encoded><![CDATA[<p>Имеется возможность предложить пользователю заполнить в форме текстовые поля, установить в какое-либо положение переключатели, выбрать какой-либо элемент из списка и т. д., т. е. выполнить какие-либо манипуляции с элементами управления, а затем перейти на другую Web-страницу и отобразить на этой новой странице измененные свойства элементов управления предыдущей страницы. Замечу, что это — типичная ситуация.</p>
<p>Поставим следующую конкретную задачу. Имеем Web-форму, написанную на &quot;чистом&quot; HTML, т. е. в данной разметке нет тегов ASP, нет JavaScript-кода, нет PHP-скрипта, есть только теги HTML. Web-форма содержит два текстовых поля и кнопку для отправки данных. Одно поле приглашает пользователя ввести свое имя, а второе — адрес электронной почты. Щелчок на кнопке отправляет данные, заполненные пользователем в форме, на другую Web-страницу для обработки и отображения принятых данных на этой новой странице.</p>
<p><span id="more-350"></span>Для решения этой задачи запустим <b>VB2010</b>, закажем новый проект из шаблона<b>Empty ASP.NET Web Application</b>. Добавим Web-форму, содержащую только теги HTML, для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b> и в появившемся окне укажем шаблон <b>HTML page</b>. В окне <b>Solution Explorer</b> переименуем новый появившийся файл в <b>ishod.htm</b>, на вкладке <b>View Code</b> этого файла введем HTML-разметку, представленную на рис. 83.1.</p>
<p><center><img src='/images/primer83a.jpg'></center><br /><center><b>Рис. 83.1. HTML-разметка Web-страницы, содержащей форму</b></center><br />Обратите внимание на тег <b>&lt;form&gt;</b>: здесь атрибут <b>action</b> (действие) формы ссылается на страницу, которая будет обрабатывать данные, принятые с формы. Атрибут формы <b>method</b> определяет способ передачи данных. Существуют два метода: <b>get</b> и <b>post</b>. Метод <b>get</b> передает все данные формы в конце <b>URL</b> через параметры гиперссылки. Из-за различных ограничений, связанных со спецификой языков и длиной данных, этот метод применяется редко. Метод post передает все данные формы в теле запроса. Этот метод используется чаще, чем <b>get</b>.</p>
<p>Элемент <b>&lt;input&gt;</b> является базовым для всех элементов формы. Он используется для внедрения в форму кнопок, графических изображений, флажков, переключателей, паролей и текстовых полей. Атрибут <b>type</b> определяет тип элемента, для текстовых полей <b>type=&quot;text&quot;</b>, для кнопок <b>type=&quot;submit&quot;</b>, для флажков <b>type=&quot;checkbox&quot;</b> и т. д. Атрибутом <b>name</b> мы будем пользоваться для идентификации элементов управления при обработке данных формы. Атрибутом <b>value</b> мы воспользовались, чтобы в первом поле по умолчанию каждый раз при запуске формы оказывалась фамилия автора.</p>
<p>Заметим, что <b>Visual Studio 2010</b> содержит удобный HTML-редактор, который зеленым подчеркиванием указывает на синтаксические ошибки, допущенные при вводе HTML-разметки. Для примера на рис. 83.1 мы не заключили значение атрибута <b>type</b> в двойные кавычки, редактор HTML-разметки подчеркнул этот фрагмент зеленой волнистой линией, и при &quot;зависании&quot; указателя мыши над ним мы получили сообщение об этой ошибке: &quot;Validation (XHTML 1.0 Transitional): Attribute values must be enclosed in quotation marks&quot;.</p>
<p>Нажмем клавишу <b>&lt;F5&gt;</b> для запуска данного проекта, в результате получим форму, подлежащую заполнению (рис. 83.2).</p>
<p><center><img src='/images/primer83b.jpg'></center><br /><center><b>Рис. 83.2. Форма для заполнения и дальнейшей обработки</b></center><br />Теперь создадим Web-страницу, которая будет обрабатывать данные, принятые с формы. Для этого в пункте меню <b>Project</b> выберем команду <b>Add New Item</b>, в новом появившемся окне укажем шаблон <b>Web Form</b> и добавим его к нашему проекту. В окне <b>Solution Explorer</b> переименуем новый файл в <b>res.aspx</b>. На этой новой странице текущего проекта мы не будем использовать никакие элементы управления. Отображать принятые новой страницей данные будем с помощью объекта <b>Response</b>. На вкладке файла программной поддержки <b>res.aspx.vb</b> введем программный код, приведенный в листинге 83.</p>
<p><b>Листинг 83. Формирование Web-страницы, получающей данные</b></p>
<style><!-- p.MsoNormal	{mso-style-parent:"";	margin-top:0cm;	margin-right:0cm;	margin-bottom:10.0pt;	margin-left:0cm;	line-height:115%;	font-size:11.0pt;	font-family:"Calibri","sans-serif";	}--></style>
<p><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; Данная Web-страница получает имя пользователя и адрес его </span>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; электронной почты от Web-формы ishod.htm и отображает эти </span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: green">&#8216; данные на странице.</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">Public</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span> <span style="color:#2B91AF">WebForm1</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp; </span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: blue">Inherits</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas"> System.Web.UI.<span style="color:#2B91AF">Page</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">Protected</span> <span style="color:blue">Sub</span> Page_Load(<span style="color:blue">ByVal</span> sender <span style="color:blue">As</span> <span style="color:blue">Object</span>, <span style="color:blue">ByVal</span> e <span style="color:blue">As</span> System.<span style="color:#2B91AF">EventArgs</span>)<span style="color:blue">Handles</span> <span style="color:blue">Me</span>.Load</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Метод<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = Request.HttpMethod()</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Имя<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = Request.Item(<span style="color:#A31515">&quot;name&quot;</span>)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:green">&#8216; </span></span><span style="font-size: 9.5pt; font-family: Consolas; color: green">или</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> Dim </span><span style="font-size: 9.5pt; font-family: Consolas; color: green">Имя</span><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas; color: green"> As String = Request.Form.Item(&quot;name&quot;)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:blue">Dim</span> </span><span style="font-size: 9.5pt; font-family: Consolas">Почта<span lang="EN-US" style="color:blue">As</span><span lang="EN-US"><span style="color:blue">String</span> = Request.Item(<span style="color:#A31515">&quot;email&quot;</span>)</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span lang="EN-US" style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="font-size: 9.5pt; font-family: Consolas">Response.Write(<span style="color:#A31515">&quot;Передача данных произвдена методом &quot;</span> + Метод + <span style="color:#A31515">&quot;&lt;br /&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;Получено имя: &quot;</span> + Имя + <span style="color:#A31515">&quot;&lt;br /&gt;&quot;</span>)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Response.Write(<span style="color:#A31515">&quot;Получен адрес электронной почты: &quot;</span> + Почта)</span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas">&nbsp;&nbsp;&nbsp;<span style="color:blue">End</span> <span style="color:blue">Sub</span></span></p>
<p class="MsoNormal" style="line-height: normal; text-autospace: none; margin-bottom: .0001pt"><span style="font-size: 9.5pt; font-family: Consolas; color: blue">End</span><span style="font-size: 9.5pt; font-family: Consolas"><span style="color:blue">Class</span></span></p>
<p>Как видно из программного кода, при обработке события загрузки страницы чтение переданных данных организуем с помощью методов класса Request. Фрагмент работы Web-страницы представлен на рис. 83.3.</p>
<p><center><img src='/images/primer83c.jpg'></center><br /><center><b>Рис. 83.3. Отображение данных формы на новой странице</b></center><br /><strong><a href="/dwn.php?file=primer83.rar" target="_top" title="Скачать исходник к Примеру 83. Передача данных формы на другую Web-страницу методами класса Request">Скачать исходник к Примеру 83. Передача данных формы на другую Web-страницу методами класса Request</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://vbprog.ru/primer83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

