Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Отображение номера текущей записи




Добавление навигации по записям

В заключении добавим к форме элементы, обеспечивающие навигации по записям объекта DataSet. В этом примере мы добавим две кнопки Предыдущая и Следующая, а также добавим текстовое поле, в котором будет отображаться номер текущей записи.

Для получения номера текущей записи таблицы данных используется свойство Position, которое доступно через объект BindingContext. Чтобы перемещаться по записям таблицы набора данных, нужно изменять значение этого свойства. Чтобы определить сколько записей находится в таблице данных, нужно получить значение свойства count объекта BindingContext. Для добавления объектов навигации выполните следующие действия.

 

1. Добавьте к форме две дополнительные кнопки, установив их свойства в соответствии с табл. 2.

 

 

  Таблица 2 Свойства элементов управления Button
Name (имя) Text (текст)
BtnNext BtnPrevious Следующая Предыдущая

2. Создайте обработчик события нажатия кнопки Предыдущая. Добавьте программный код декремента (уменьшения на единицу) свойства Position объекта BindingContext. Код будет выглядеть следующим образом (листинг).

Листинг

' Visual Basic

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

Me.BindingContext(DsAuthorsl, "authors").Position -=1

End Sub

 

// C#

private void btnPrevious_Click(object sender, System.EventArgs e)

{

this.BindingContext[dsAuthorsl, "authors"].Position -=1;

}

3. Сделайте то же самое для кнопки Следующая, только увеличьте значение свойства Position на единицу (листинг).

Листинг

' Visual Basic

Private Sub btnNext_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnNext.Click

Me.BindingContext(DsAuthorsl, "authors").Position+=1

End Sub

 

// C#

private void btnNext_Click(object sender, System.EventArgs e)

{

this.BindingContext[dsAuthorsl, "authors"].Position+=1;

}

Наконец, вы можете создать showPosition метод отобразить позицию текущих записей.

1. Добавьте к форме элемент TextBox, и назовите его txtPosition (рис. 27).

Рис 27. Расположение на форме элементов навигации по записям

Примечание

Присвойте свойству Enabled значение False, чтобы пользователи могли видеть номер текущей записи, но не могли изменить его значение.

2. Создайте в форме процедуру с именем showPosition. В этой процедуре получите количество записей в таблице и номер текущей записи от объ екта BindingContext и отобразите эти значения в текстовом поле. Программный код листинга демонстрирует эти действия.

Листинг

' Visual Basic

Private Sub ShowPosition()

Dim iCnt As Integer

Dim iPos As Integer

iCnt=Me.BindingContext(DsAuthorsl, "authors").Count

If iCnt=0 Then

txtPosition.Text="(No records)"

Else

iPos=Me.BindingContext(DsAuthorsl,"authors").Position+1 txtPosition.Text=iPos.ToString & " of " & iCnt.ToString

End If

End Sub

 

// C#

private void ShowPosition()

{

int iCnt;

int iPos;

iCnt=this.BindingContext[dsAuthorsl, "authors"].Count;

iPos=this.BindingContext[dsAuthorsl, "authors"].Position+1;

if (iCnt==0)

{

txtPosition.Text="(No records)";

}

else

{

txtPosition.Text=iPos.ToString() + " of " + iCnt.ToString();

}

}

3. Добавьте обращение к процедуре ShowPosition в тех фрагментах приложения, где текущая запись могла измениться. Для данного примера это необходимо сделать в следующих местах:

 

• После обращения к методу Fill в обработчике события click кнопки Показать авторов.

• После изменения текущей записи в обработчике события click кнопок Предыдущая и Следующая. Например, законченный фрагмент кода для кнопки Предыдущая будет выглядеть следующим образом (листинг).

Листинг

' Visual Basic

Private Sub btnPrevious_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnPrevious.Click

Me.BindingContext(DsAuthorsl, "authors").Position -=l

ShowPosition()

End Sub

// C#

private void btnPrevious_Click(object sender, System.EventArgs e)

{

this.BindingContext[dsAuthorsl, "authors"].Position -=1;

ShowPosition ();

}

Тестирование работы приложения

Вы можете теперь проверить работу данной формы, чтобы удостовериться, что она отображает именно те данные, которые вы запрашиваете при вводе параметра.

Для тестирования работы формы выполните следующие действия.

1. Нажмите клавишу <F5> для запуска формы.

2. Когда форма появится на экране, введите код штата Калифорния (са) в соответствующем текстовом поле, и затем нажмите кнопку Показать авторов.

В текстовых полях будет отображена информация из базы данных о первом авторе, который живет в Калифорнии.

3. Нажимайте кнопки Предыдущая и Следующая, чтобы убедится в корректности перемещения по записям (рис. 28).

Рис 28. Форма во время работы приложения

4. Введите значение нового кода штата в текстовое поле (например, UT для штата Юта), и затем нажмите кнопку Показать авторов.

Вы увидите, что будет отображен новый автор и изменится количество записей.

Есть некоторые дополнения, которые можно добавить в это приложение для удобства работы пользователя.

□ Не вводить коды штатов в текстовое поле, а выбирать их из раскрывающегося списка. Для этого необходимо добавить к форме еще один адаптер данных с SQL-запросом:

SELECT DISTINCT state FROM authors

Затем сгенерировать второй набор данных и связать его с элементом ListBox.

□ В случае отсутствия возвращаемых-записей (в штате нет авторов) выдать соответствующее сообщение, для чего нужно проверить свойство Count объекта BindingContext на нулевое значение. Реализация проверки показана в листинге.

Листинг

' Visual Basic

Private Sub btnShow_Click(ByVal sender As System.Object, ByVal e As System. EventArgs) Handles btnShow.Click

OleDbDataAdapterl.SelectCommand.Parameters("state").Value=txtStateParameter.Text

DsAuthors1.Clear()

OleDbDataAdapterl.Fill(DsAuthors1)

If Me.BindingContext(DsAuthorsl, "authors").Count=0 Then

MessageBox.Show("Нет записей для штата" & txtStateParameter.Text) txtStateParameter.Focus()

Else

ShowPosition()

End If

End Sub

 

// C#

private void btnShow_Click(object sender, System.EventArgs e)

{

OleDbDataAdapterl.SelectCommand.Parameters["state"].Value=txtStateParameter.Text;

dsAuthorsi.Clear();

OleDbDataAdapterl.Fill(dsAuthorsl);

if (this.BindingContext[dsAuthorsl, "authors"].Count==0)

{

MessageBox.Show("Нет записей для штата " + txtStateParameter.Text);

txtStateParameter.Focus();

}

else

{

ShowPosition();

}

}

□ Отобразить информацию об авторах в сетке данных (DataGrid), а не в текстовых полях, чтобы видеть одновременно несколько записей.

□ Добавить кнопки, которые позволят пользователю добавлять, редактировать и удалять записи об авторах и т. п.




Поделиться с друзьями:


Дата добавления: 2014-11-20; Просмотров: 566; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.