
Проект Закладки
Проект Регистрация
Проект Предпочтения
В нашем случае повторно выводятся заголовки столбцов и закрывается HTML таблица:
<TR style="Background-Color:DFECD8">
<TD><B>Page Name and Link</B></TD>
<TD><B>Description</B></TD>R</TR>
</Table>
</footertemplate>
</ASP:Repeater>
В коде страницы содержится процедура, которая выполняется при загрузке:
Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
Dim DBConn as OleDbConnection
Dim DBCommand As OleDbDataAdapter
Dim DSBookmarks as New DataSet
Dim TheQuery as String
Dim MyCookieCollection as HTTPCookieCollection
Dim i as integer
MyCookieCollection - Request.Cookies
For i = 0 to MyCookieCollection.Count - 1
If Left(MyCookieCollection.Item(i).Name,8) _
= "Bookmark" Then
TheQuery - TheQuery & "PagelD = " _
& MyCookieCollection.Item(i).Value _
& " or "
End If
Next
If Len(TheQuery) > 0 Then
TheQuery - Left(TheQuery, Len(TheQuery) - 3)
TheQuery =• "Select PageName, PageLocation, " _
& "PageDescription From Pagelnfo Where " _
& TheQuery & " Order By PageName"
DBConn = New OleDbConnection("Provider=sqloledb;" _
& "server=localhost;" _
& "Initial Catalog=INETC12;"
& "User Id=sa;" _
4 "Password=yourpassword;")
DBCommand = New OleDbDataAdapter _
(TheQuery,DBConn)
DBCommand.Fill(DSBookMarks, _
"ThePagelnfo")
repBookmarks.DataSource = _
DSBookmarks.Tables("ThePagelnfo").DefaultView
repBookmarks.DataBind()
End If
End Sub
В данной процедуре мы задаем строковую переменную для хранения временного запроса:
переменную для хранения списка файлов cookie посетителя:
Dim MyCookieCollection as HTTPCookieCollection
и переменную цикла:
После этого формируется список файлов cookie посетителя:
MyCookieCollection = Request.Cookies
и начинается цикл по обработке каждого такого файла:
For i = 0 to MyCookieCollection.Count - 1
При сохранении закладок в виде файлов cookie на компьютере посетителя название каждого такого файла начинается со слова Bookmark. Поэтому теперь мы должны проверить, начинается ли имя файла с этого слова:
If Left(MyCookieCollection.Item(i).Name,8) _
= "Bookmark" Then
Если это один из файлов-закладок, то его имя добавляется в строку формируемого запроса. Затем идентификатор каждой отмеченной закладкой страницы включается в предложение where запроса, что позволяет получить записи из базы данных:
TheQuery = TheQuery & "PagelD = " _
& MyCookieCollection.Item(i).Value _
& " or "
После этого обрабатывается следующий файл cookie. По завершении цикла необходимо проверить, найдены ли закладки посетителя:
If Len (TheQuery) > 0 Then
и если это так, то из строки запроса нужно удалить находящееся в конце ключевое слово Or:
TheQuery = Left(Thefluery, Len(TheQuery) - 3)
Далее в строку запроса добавляются предложения Select и Order:
TheQuery = "Select PageName, PageLocation, "
& "PageDescription From Pagelnfo Where " _
& TheQuery & " Order By PageName"
Теперь мы можем осуществить соединение с базой данных:
DBConn = New 01eDbConnection("Provider=sqloledb;" _
& "server=localhost;" _
& "Initial Catalog-INETC12;"
& "User Id=sa;"
& "Password=yourpassword;")
извлечь соответствующие записи о страницах:
DBCommand=- New OleDbDataAdapter _
(TheQuery,DBConn)
и поместить их в объект DataSet:
DBCommand.Fill(DSBookMarks, _
"ThePagelnfo")
который затем будет связан с элементом управления Repeater:
repBookmarks.DataSource = _
DSBookmarks.Tables("ThePagelnfо").DefaultView
repBookmarks.DataBind()
Изменение кода для Access
Если вместо базы данных SQL-сервера будет использоваться база данных Access, в коде страницы Закладки следует изменить строку связи с базой
DBConn = New OleDbConnection("Provider=sqloledb;" _
& "server=localhost;" _
& "Initial Catalog=INETC12;"
& "User Id=sa;" _
& "Password=yourpassword;")
таким образом, чтобы в ней указывалось имя соответствующего провайдера и имя базы данных Access:
DBConn = New.01eDbConnection("PROVIDER=Microsoft.Jet.Oledb.4.0;" _
& "DATA SOURCE="
& Server.MapPath("/InetBook/C12/Bookmarks/" _
& "Access/C12/Bookmarks.mdb/"))
|