powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Попытка удаления выделеной строки в DataGrid
4 сообщений из 4, страница 1 из 1
Попытка удаления выделеной строки в DataGrid
    #32619646
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DataTable для визуализации используется наследник DataGrid.
Переопределяю методы в наследнике.
Требуется удалить выделеную в гриде строку и выделить следующую строку.
Начал писать на С# недели 2 как, так что максимум на что меня хватило, так это на:
Код: plaintext
1.
2.
3.
4.
5.
6.
public class SprSample : DataGrid
.....
CurrencyManager cm = (CurrencyManager)this.BindingContext[this.DataSource, this.DataMember];
DataRowView rowView = (DataRowView)cm.Current;
((DataTable)(this.DataSource)).Rows.Remove(rowView.Row);
this.Select(CurrentRowIndex);
Уж очень тихо верится, что это оптимальный вариант.
Может кто знает как правильно это делается?
...
Рейтинг: 0 / 0
Попытка удаления выделеной строки в DataGrid
    #32619671
кузя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проводи четкую грань

!!! Remove из коллекции != Delete записи !!!

в твоём случае нужен Delete, иначе ничего не будет изменено в источнике данных при Update
...
Рейтинг: 0 / 0
Попытка удаления выделеной строки в DataGrid
    #32620714
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присоединяюсь к Кузя .
Если речь идет о коллекции Rows то методы Remove и RemoveAt не помечают запись для удаления, поэтому такие записи не попадут для метода Update класса DataAdapter и удаления из БД не произойдет.

Чтобы не путаться при использовании же BindingContext , метод RemoveAt можно использовать для удаление записи, например таким образом:
Код: plaintext
1.
2.
3.
4.
5.
6.
BindingManagerBase bm = (BindingManagerBase)this.BindingContext[
this.dataGrid1.DataSource, this.dataGrid1.DataMember];
if (bm.Count >  0 )
{
  bm.RemoveAt(bm.Position);
}
При этом запись помечается удаленной и удаление в БД тоже будет зафиксировано.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Попытка удаления выделеной строки в DataGrid
    #32620847
Astakhov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На самом деле, не обязательно, что б отработка прошла до DataAdapter, потому как класс пердварительно спрашивает, есть ли возможность удаления записи и если есть, то запись удаляется вне класса, я получаю только результат удаления.
Откровенно говоря несколько смущает то, что так как это переопределение методов наследника DataGrid - результат, примерно следующий код:

Код: plaintext
1.
2.
3.
4.
BindingManagerBase bm = (BindingManagerBase)this.BindingContext[this.DataSource, this.DataMember];
if (bm.Count >  0 )
{
  bm.RemoveAt(bm.Position);
}
Получается, что у себя же спрашиваю и передаю себя же в качестве параметров...
Меня не покидает ощущение - дежавю . :-)
Но все работает.
Спасибо.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Попытка удаления выделеной строки в DataGrid
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]