Книга: ЯЗЫК ПРОГРАММИРОВАНИЯ С# 2005 И ПЛАТФОРМА .NET 2.0. 3-е издание
Обновление строк
Обновление строк
Еще одной операцией, которую вы должны освоить, является изменение значений существующей в DataTable строки. С этой целью можно, например, сначала c помощью метода Select() получить строку, соответствующую имеющемуся критерию фильтра. Имея соответствующий объект DataRow, вы можете соответствующим образом его изменить. Предположим, что в форме есть кнопка (тип Button). при щелчке на которой выполняется поиск тех строк в объекте DataTable, для которых Make равно BMW. Идентифицировав эти элементы, вы изменяете значение Make с BMW на Colt.
// Поиск строк для редактирования с помощью фильтра.
private void btnChangeBeemersToColts_Click(object sender, EventArgs e) {
// Проверка вменяемости пользователя.
if (DialogResult.Yes == MessageBox.Show("Вы уверены?? BMW намного лучше, чем Colt!", "Подтвердите свой выбор!", MessageBoxButtons.YesNo)) {
// Построение фильтра.
string filterStr = "Make='BMW'";
string strMake = null;
// Поиск строк, соответствующих критериям фильтра.
DataRow[] makes = inventoryTable.Select(filterStr);
// Замена бумеров на кольты!
for (int i = 0; i ‹ makes.Length; i++) {
DataRow temp = makes[i];
strMake += temp["Make"] = "Colt";
makes[i] = temp;
}
}
}
Класс DataRow предлагает методы BeginEdit(), EndEdit() и CancelEdit(), которые позволяют редактировать содержимое строки, временно приостанавливая все заданные условия проверки ввода. При использовании предложенной выше программной логики строка будет проверяться с каждым новым присваиванием. (И если вы задали обработку каких-то событий DataRow, они тоже будут генерироваться с каждой модификацией.) При вызове BeginEdit() для DataRow строка переводится в режим редактирования. Вы получаете возможность внести любые необходимые вам изменения, чтобы затем вызывать EndEdit() и зафиксировать эти изменения или CancelEdit() и выполнить откат к оригинальной версии данных, например:
private void UpdateSomeRow() {
// Предполагается, что строка для редактирования уже получена.
// Выполняется перевод этой строки в режим редактирования.
rowToUpdate.BeginEdit();
// Отправка строки вспомогательной функции, возвращающей Boolean.
if (ChangeValuesForThisRow(rowToUpdate)) rowToUpdate.EndEdit(); // OK!
else rowTaUpdate.CancelEdit(); // Забудьте об этом.
}
Вы, конечно, можете вызывать эти методы для данного DataRow и вручную, но они вызываются автоматически при редактировании элемента DataGridView, связанного с DataTable. Например, при выборе строки в DataGridView эта строка автоматически переводится в режим редактирования. А при перемещении фокуса ввода в новую строку автоматически вызывается EndEdit().
- Автоматическое обновление
- Обновление записей каталога
- Инструмент командной строки gbak
- Инструмент командной строки gfix
- Как выделить строку, столбец и ячейки
- Ускоренное обновление данных
- Удобная операция объединения строк
- Работа со строками
- Преобразование строки в целое: stoi( )
- Запросы на обновление
- ПРИМЕР: СОРТИРОВКА СТРОК
- Запросы, подсчитывающие строки