Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Топ:
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Что нужно делать при лейкемии: Прежде всего, необходимо выяснить, не страдаете ли вы каким-либо душевным недугом...
Дисциплины:
2022-09-11 | 24 |
5.00
из
|
Заказать работу |
Если определено свойство Sort объекта DataView, то с помощью метода Find можно найти определенную строку таблицы, но только на основе данных той колонки, для которой был установлено свойство Sort. Например.
DataView view = new DataView(ds.Tables[0]) { Sort = "Name" };
int n = view.Find("Charlie Parker"); // Здесь не может быть задан адрес, или другое поле (только имя)
string s = "Row not found!";
if (n!= -1)
s = view[n]["Name"] + ", home address: " + view[n]["Addr"];
Console.WriteLine (s);
Метод FindRows помогает отыскать множество строк, удовлетворяющих критерию поиска. Этот метод также работает с колонкой, по которой был отсортирован образ таблицы.
// Образ таблицы экзаменов
view = new DataView(ds.Tables[1]) { Sort = "Mark" }; // Сортировка по полю "оценка" за экзамен
DataRowView[] drv = view.FindRows("3"); // FindRows возвращает все тройки, полученные на экзаменах
foreach (DataRowView rv in drv)
Console.WriteLine(rv["StudID"] + ". " + rv["Course"]);
Класс DataRowView, также как и DataRow, имеет методы BeginEdit, EndEdit, CancelEdit, и Delete. Эти методы позволяют работать со строками и с отдельными полями данных. Строки можно добавлять, редактировать и удалять. Добавление новой строки, в отличие от DataRow, происходит только после выполнения метода EndEdit. Рассмотрим примеры.
DataTable dt = ds.Tables[0];
DataView view = new DataView(dt);
DataRowView rv = view.AddNew(); // Добавим новую строку
rv["Name"] = "Art Pepper"; // Работает индексатор
rv["Phone"] = "555-7799";
rv["Addr"] = "North st. 33";
rv.EndEdit();
//====== Проверка результата
int last = dt.Rows.Count - 1;
Console.WriteLine (dt.Rows[last]["Name"]);
// rv = view[last]; // Имитируем обновление текущей строки DataRowView
rv.BeginEdit(); // Редактируем текущую строку
rv ["Name"] = "Art Pepper Junior";
rv.EndEdit();
//====== Проверка результата
Console.WriteLine (dt.Rows[last]["Name"]);
rv.Delete();
//====== Проверка результата
Console.WriteLine (dt.Rows[dt.Rows.Count-1]["Name"]);
Думаю, что вы догадались, как наиболее просто проверить эти фрагменты кода. Их можно временно вставить в конец метода Open, где DataSet и его таблицы уже инициализированы.
Метод CreateChildView класса Data Row View позволяет создать новый объект DataView, который является выборкой строк связанной таблицы. В этой выборке содержатся только те строки, которые соответствуют текущей строке главной таблицы. Метод CreateChildView в качестве параметра должен получить либо ссылку на объект DataRelation, либо имя связи между таблицами. Следующий пример иллюстрирует сказанное.
DataView view = new DataView(ds.Tables[0]);
DataView cv = view[0].CreateChildView(ds.Relations[0]);
Console.WriteLine(view[0]["Name"] + "'s exams from the table " + cv.Table.TableName);
for (int i = 0; i < cv.Count; i++)
Console.WriteLine (cv[i]["Course"] + ", " + cv[i]["Mark"]);
Задание
Реализуйте реакцию на нажатие кнопки btnFindView. Создайте образ выбранной таблицы (DataView). Образ должен быть отфильтрован с учетом критерия поиска, заданного в строке comboFind. В процессе обработки события (программным способом) создайте DataGridView grid, поместите его в форму formFound и привяжите его к данным образа таблицы DataView. Для объекта grid добавьте обработку события CellEnter. В реакции на это событие выделяйте цветом те строки таблиц главного окна, которые соответствуют выделенной строке DataGridView вспомогательного окна formFound.
Например, если grid в окне formFound отображает результаты экзаменов и в нем активна строка, соответствующая ID=17 studID=4, то в gridStud и gridExam должны быть выделены строки, соответствующие studID=4 и ID=17, как показано на рисунке. Перемещение фокуса вверх и вниз по строкам grid в форме formFound должно отслеживаться в обеих таблицах главного окна. Таким образом, пользователь видит как данные студента, экзамен которого отбражен в выделенной строке grid (окна поиска), так и информацию о самом экзамене.
Все предыдущие режимы поиска должны работать, как и прежде. Вспомогательная форма должна создаваться вновь при переключении режимов поиска (ListView или DataGridView). Стиль вспомогательной таблицы grid должен изменяться в зависимости от типа активной таблицы в главном окне.
Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!