powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / проверить выделена ли строка перед удалением из datagridview?
13 сообщений из 13, страница 1 из 1
проверить выделена ли строка перед удалением из datagridview?
    #38301157
Scherbakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
хочу удалить строку из грида
при загрузке грида выделяю по умолчанию первую строку:
Код: c#
1.
dataGridView.Rows[0].Selected = true


перед непосредственным удаление проверяю выделена ли хоть одна строка:
Код: c#
1.
2.
3.
4.
5.
if (dataGridView.SelectedRows.Count < 1)
{
   MessageBox.Show("Не выбрана запись!");
   return;
}


а потом удаляю её из дататэйбла, который является источником данных для грида:
Код: c#
1.
m_MainGrid.Rows[dataGridView.CurrentRow.Index].Delete();


так вот если пользователь не ткнул ни в одну строку, то при попытке определить индекс выбранной строки
Код: c#
1.
dataGridView.CurrentRow.Index


программа рушится
подскажите что не так делаю?
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301182
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scherbakov,

используй bindingsource и bindingnavigator для таких дел
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301204
Scherbakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallarisиспользуй bindingsource и bindingnavigator для таких дел
неужели без смены источника данных эту проблему никак не решить?
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301226
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scherbakovтак вот если пользователь не ткнул ни в одну строку, то при попытке определить индекс выбранной строки
Код: c#
1.
dataGridView.CurrentRow.Index



программа рушится
подскажите что не так делаю?
Код: c#
1.
2.
3.
var currentIndex = -1; //ничего не выделено
if(dataGridView.CurrentRow != null)
 currentIndex = dataGridView.CurrentRow.Index;



но предыдущий автор правльно сказал работай с bindingsource
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301241
Scherbakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pation,
Спасибо, помогло!
у меня источником является datatable.
под .net пишу впервые, только знакомлюсь, впрочем как и с C#
почему лучше использовать bindingsource?
просто много уже написано с использованием именно datatable
не хотелось бы все переписывать.
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301437
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scherbakovпочему лучше использовать bindingsource?
по многим причинам
The BindingSource component serves many purposes. First, it simplifies binding controls on a form to data by providing currency management, change notification, and other services between Windows Forms controls and data sources. This is accomplished by attaching the BindingSource component to your data source using the DataSource property. For complex binding scenarios you can optionally set the DataMember property to a specific column or list in the data source. You then bind controls to the BindingSource. All further interaction with the data is accomplished with calls to the BindingSource component. For examples on how the BindingSource can simplify the binding process, see How to: Bind Windows Forms Controls to DBNull Database Values and How to: Handle Errors and Exceptions that Occur with Databinding. Navigation and updating of the data source is accomplished through methods such as MoveNext, MoveLast, and Remove. Operations such as sorting and filtering are handled through the Sort and Filter properties. For more information on using sorting and filtering with the BindingSource, see How to: Sort and Filter ADO.NET Data with the Windows Forms BindingSource Component.
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301479
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scherbakovне хотелось бы все переписывать.

Ничего переписывать не надо:
Код: c#
1.
2.
3.
4.
DataTable dt_ = ...;
BindingSource bs_ = dt_;
dataGridView1.DataSource = bs_;
bindingNavigator1.BindingSource = bs_;
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301482
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибся
Код: c#
1.
2.
3.
4.
5.
DataTable dt_ = ...;
bs_ = new BindingSource();
bs_.DataSource = dt_;
dataGridView1.DataSource = bs_;
bindingNavigator1.BindingSource = bs_;
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301797
Scherbakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

я имел ввиду, что много обработок вставки и обновления данных в гриде написано через соответствующие операции с datatable.
хотя может быть лучше потратить время на то чтоб переписать, и не мучиться потом.
вот еще вопрос:
удаляю строку из датагридвью
а вернее удаляю её из дататэйбла
в обработчике кнопки удалить пишу:
Код: c#
1.
2.
3.
4.
5.
6.
7.
if (DataGridView1.CurrentRow == null) //поверяю выбрана ли запись
{
	MessageBox.Show("Не выбрана запись!");
	return;
}  
DataTable.RowDeleted += rowDeleted; //вызываю обработчик события удаления строки
DataTable.Rows[DataGridView1.CurrentRow.Index].Delete();

[/SRC]
в обработчике события удаления делаю следующее:
Код: c#
1.
2.
3.
4.
5.
6.
DataRow[] delRows = DataTable.Select(null, null, DataViewRowState.Deleted); //пихаю в массив помеченную на удаление строку
DataRow row;
MessageBox.Show(delRows.Length.ToString()); //убеждаюсь что массив не пуст, возвращает 1
row = delRows[0]; //присваиваю эту единственную строку объекту DataRow
String r;
r = row[0].ToString(); //присваиваю первый столбец строки переменной (впринципе пробовал любой столбец)


а дальше при попытке вывести на экран результат просто ничего не происходит
Код: c#
1.
MessageBox.Show(r);


в чем проблема, почему окно сообщения не появляется вообще?
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301860
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scherbakovхотя может быть лучше потратить время на то чтоб переписать, и не мучиться потом.


Ты разок попробуй, чтоб понять. Я тоже когда-то такой фигней страдал, как у тебя.
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301879
Scherbakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,

уже ушел думать в этом направлении, ибо даже на взгляд новичка это на изврат смахивает))
но все же, интереса ради, по вопросу есть какие-нибудь предположения?
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301960
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Scherbakovв чем проблема, почему окно сообщения не появляется вообще?

Ну разве что падает какой-то экспешн, который попадает в "тихий" обработчик catch{}
...
Рейтинг: 0 / 0
проверить выделена ли строка перед удалением из datagridview?
    #38301973
Scherbakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pallaris,
Извини, помучаю еще вопросом...
посоветуй материал для изучения
желательно что было что посмотреть о работе с datagridview посредством bindingsource и bindingnavigator
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / проверить выделена ли строка перед удалением из datagridview?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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