Реклама:
Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис 4.50

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

4.2.5. Программная навигация в DataGrid по таблицам

Для навигации по связанным таблицам в DataGrid применяются методы NavigateTo и NavigateBack.

Метод NavigateTo переходит к дочерней таблице, сответствующей отношению relationName, притом на запись этого отношения, определяемую параметром

rowNumber.

public void NavigateTo( int rowNumber, string relationName );

При выполнения метода имеет место пикантный момент: в дочерней таблице текущей будет запись с индексом rowNumber, независимо от того, какая запись была текущей в дочерней таблице на момент выполнения метода NavigateTo.

Пример. Пусть текущая запись в родительской таблице - это кафедра № 11 (рис. 4.51).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.51

Однако выполнение кода

dataGrid1.NavigateTo(0, "Ка£Ргер");

приведет к загрузке в dataGrid1 отношения KafPrep, но притом указатель встанет на самую первую запись отношения с индексом 0, никак не связанную с кафедрой № 11 (рис. 4.52).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.52

Методу NavigateBack подобная пикантность не присуща. Он попросу возвращается на один уровень выше в родительскую таблицу и притом текущей становится запись, которой были подчинены записи в дочерней таблице, выгруженной из

DataGrid.

public void NavigateBack();

Например, для подчиненной таблицы Prep (рис. 4.53)

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.53

выполнение метода

dataGrid1.NavigateBack();

приведет к загрузке в DataGrid родительской таблицы Kaf и установке в качестве текущей записи кафедры № 11 (рис. 4.54), т. е. той записи, которой было подчинено содержимое дочерней таблицы на момент отработки метода NavigateBack.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

J рис. 4.54

Событие смены таблицы данных в DataGrid (неважно, ручное либо программное) сопровождается сменой значения свойства DataMember названного элемента управления, а также наступлением события public event NavigateEventHandler Navigate;

Обработчик этого события имеет вид

public delegate void NavigateEventHandler( object sender, Naviga-teEventArgs ne );

Польза от параметра ne, впрочем, небольшая. Он содержит, помимо общих, свойство Forward, возвращающее true, если мы движемся в направлении от родителя к потомку.

public bool Forward {get;}

_I

Пример. Обработчик события смены таблицы в DataGrid должен выводить название текущего раздела данных в заголовке DataGrid (рис. 4.55 и 4.56).

private void dataGrid1_Navigate(object sender, System.Windows.Forms.NavigateEventArgs ne)

{

dataGridl.CaptionText = dataGridl.DataMember;

}

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

puc. 4.55

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

puc. 4.56

Навигация по связанным и несвязанным таблицам в DataGrid возможна, если свойство

public bool AllowNavigation {get; set;}

содержит значение true.

Если отключить возможности навигации, список ссылок на таблицы (рис. 4.57, а) пропадает (рис. 4.57, б).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

puc. 4.57

При включении возможности навигации список появляется вновь. Нечто похожее происходит, когда, находясь в дочерней таблице (рис. 4.58), мы отключим навигацию. Вернуться в родительскую таблицу теперь нельзя (обратите внимание, как в заголовке

Ба1;аСг1с1 на рис. 4.59 исчез символ КЗ). Впрочем, возврат разрешается немедленно при повторном включении навигации.

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.59

При изменении значения свойства AllowNavigation наступает событие


⇐ Предыдущая страница| |Следующая страница ⇒