Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМП по БД 5244.doc
Скачиваний:
148
Добавлен:
09.04.2015
Размер:
3.82 Mб
Скачать

Создание Web-формы для ввода данных AddContact

1. Добавьте к проекту новую Web-форму и назовите ее AddContact.aspx.

2. В окне Properties выберите объект DOCUMENT и задайте для свойства PageLayout значение FlowLayout.

3. Разместите на Web-форме элементы управления, перечисленные в следующей таблице, и задайте их свойства, как указано в этой таблице.

Элемент управления

Свойство

Значение

TextBox

ID

txtFirstName

TextBox

ID

txtLastName

TextBox

ID

txtAddress

TextMode

MultiLine

TextBox

ID

txtCity

DropDownList

ID

drpStates

DataSource

arrState

TextBox

ID

txtZIP

TextBox

ID

txtHomePhone

TextBox

ID

txtWorkPhone

TextBox

ID

txtNotes

DropDownList

ID

drpContactTypes

Button

ID

butAdd

Text

Add

Button

ID

butCancel

Text

Cancel

Literal

ID

litStatus

Hyperlink

Text

Вернуться на главную

NavigateUrl

SwitchBoard.aspx

4. Введите подписи полей прямо на Web-форме, для перехода на новую строку используйте Enter.

5. Вызовите окно Code, дважды щелкнув Web-форму, и добавьте в начало модуля следующий оператор:Imports System.Data.SqlClient

6. Web-форма AddContact использует компоненты БД. созданные в файле Global.asax во время выполнения задания 2. Чтобы получить возможность применять эти компоненты в Web-форме, объявите переменные на уровне класса и получите ссылки на эти компоненты из переменных состояния, где они хранятся. Следующий код демонстрирует, как это делается:

Dim ContactMgmt As SqlConnection

Dim adptContactTypes As SqlDataAdapter

Dim adptContacts As SqlDataAdapter

Dim dsContacts As New dsContacts()

' Это открытые переменные для привязки данных.

Public dsContactTypes As New dsContactTypes()

Public arrState As String() = Московская", "Тульская", "Калужская", "Воронежская", _

"Ростовская", "Владимирская"}

Private Sub Page_Load(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles MyBase.Load

' Получить объекты соединения и адаптера из переменной состояния Session.

ContactMgmt = Session("ContactMgmt")

adptContactTypes = Session("adptContactTypes")

adptContacts = Session("adptContacts")

' Заполните набор дачных ContactType.

adptContactTypes.Fill(dsContactTypes)

' Заполните набор данных Contacts.

adptContacts.Fill(dsContacts)

' Связать с данными списки drpContactTypes и drpState.

drpContactTypes.DataBind()

drpStates.DataBind()

End Sub

7. Каждый контакт в таблице Contacts идентифицируется значением поля ContactlD. Это первичный ключ таблицы, следовательно, его значение должно быть уникальным для каждого контактного лица. Поэтому перед добавлением к набору данных Contacts сведений о контактном лице необходимо получить из БД новое уникальное значение ContactlD, для чего к классу Web-формы потребуется добавить следующую вспомогательную функцию (эта функция возвращает новое уникальное значениеContactlD):

Private Function GetNewContactID() As Integer

Dim cmdNewID As New SqlCommand("SELECT MAX(ContactID)" & _

" FROM Contacts", ContactMgmt)

' Открыть соединение с БД.

ContactMgmt.Open()

' Получить наибольшее значение ключа.

Dim intID As Integer

' Проверить, существует ли запись.

If Not (cmdNewID.ExecuteScalar() Is DBNull.Value) Then

' Получить наибольшее число...

intID = CInt(cmdNewID.ExecuteScalar())

Else

' ...или присвоить intID значение О.

intID = 0

End If

' Закрыть соединение.

ContactMgmt.Close()

' Вернуть новое значение ключа (оно будет на единицу больше прежнего)

Return intID + 1

End Function

8. Далее необходимо добавить обработчик события butAdd_Click, который позволяет вставить в БД сведения о новом контактном лице:

Private Sub butAdd_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles butAdd.Click

' Создать новую строку набора данных.

Dim rowNew As dsContacts.ContactsRow

rowNew = dsContacts.Contacts.NewContactsRow()

' Записать в строку данные.

rowNew.ContactID = GetNewContactID()

rowNew.FirstName = txtFirstName.Text

rowNew.LastName = txtLastName.Text

rowNew.Address = txtAddress.Text

rowNew.City = txtCity.Text

rowNew.StateOrProvince = drpStates.SelectedItem.Text

rowNew.PostalCode = txtZip.Text

rowNew.HomePhone = txtHomePhone.Text

rowNew.WorkPhone = txtWorkPhone.Text

rowNew.Notes = txtNotes.Text

rowNew.ContactTypeID = drpContactTypes.SelectedItem.Value

' Добавить строку к набору данных.

dsContacts.Contacts.AddContactsRow(rowNew)

Try

' Обновить БД.

adptContacts.Update(dsContacts)

' Уведомить об успешном завершении операции.

litStatus.Text = rowNew.FirstName & " " & rowNew.LastName & _

" added successfully.<br>"

' Перезагрузить страницу, чтобы очистить поля.

Server.Transfer("AddContact.aspx")

Catch ex As Exception

litStatus.Text = "Произошла ошибка:<br>" & _

ex.Message & "<br>" & _

"Исправьте ошибку и нажмите Добавить " & _

" или Отменить.<br>"

End Try

End Sub

9. Добавьте обработчик события butCancel_Click, чтобы пользователь смог отменить операцию и очистить текстовые поля формы:

Private Sub butCancel_ServerClick(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles butCancel.ServerClick

' Перезагрузить страницу, чтобы очистить поля.

Server.Transfer("AddContact.aspx")

End Sub

Задание 5. Создание формы Calls

Web-форма Calls позволяет пользователям вводить и просматривать сведения о телефонных звонках для некоторого контактного лица. Форма содержит элемент управления DataList, позволяющий просматривать звонки контактного липа, указанного в списке элемента управления DropDownList, а также элементы управления, добавляющие сведения о звонке в элемент управления Panel. Таким образом, удается скрывать и отображать их, когда пользователь щелкает кнопку Add.

Готовая Web-форма Calls выглядит, как на рис. 3

Рис. 3