6 / 5 / 1
Регистрация: 02.05.2015
Сообщений: 182

Как удалить строки из DataGridView ?

18.07.2017, 08:59. Показов 1473. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, подскажите как удалить несоответствующие условию строки из DataGridView.
DataGridView заполняется из базы данных. После заполнения проводится проверка данных в строках по условию, если данные в определённой ячейке не соответствуют заданным условиям, тогда вся строка удаляется, и продолжается проверка остальных строк таблицы. Изменять саму базу данных не надо, только отображаемые данные в таблице.

На форме: MaskedTextBox, DataGridView

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
'заполняем DataGridView
 
Imports System.Data.OleDb
Public conn As OleDbConnection
 
Public Sub FillGrid(ByVal Grid1 As DataGridView, ByVal cmd As String, ByVal TableName As String)
        Try
            Dim c As New OleDbCommand
            c.Connection = conn
            c.CommandText = "select * from Клиент"
            Dim ds As New DataSet
            Dim da As New OleDbDataAdapter(c)
            da.Fill(ds, "Клиент")
            Grid1.DataSource = ds
            Grid1.DataMember = "Клиент"
        Catch
        End Try
'объявляем необходимые переменные
Dim findDate, firstDate, secondDate As Date
findDate = CDate(MaskedTextBox1.Text) 'задаём дату для поиска
 
'начинаем поиск в таблице Grid1
 
For Each Row In Grid1.Rows
            firstDate = Row.Cells(4).Value
            secondDate = Row.Cells(5).Value
            If findDate >= firstDate And findDate <= secondDate Then
'запись соответствует условию, эту строку оставляем
End if
Else 
' запись не соответствует необходимым условия и эту строку надо удалить из таблицы
' ? вот этот код я и не могу сделать ?
' Grid1.Rows.RemoveAt(Row.Index) - не срабатывает
End if
            End if
        Next
Добавлено через 34 минуты
а редактировать свои сообщения нельзя?
допустил ошибку в коде:
VB.NET
1
2
3
4
5
6
7
8
 If findDate >= firstDate And findDate <= secondDate Then
'запись соответствует условию, эту строку оставляем
'End if - лишнее
Else 
' запись не соответствует необходимым условия и эту строку надо удалить из таблицы
' ? вот этот код я и не могу сделать ?
' Grid1.Rows.RemoveAt(Row.Index) - не срабатывает
End if
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.07.2017, 08:59
Ответы с готовыми решениями:

Как удалить все строки DataGridView?
Пытаюсь удалить все строки таким способом, но так удаляются все строки, только когда их две. for (int i = 0; i &lt;...

Как при нажатию на кнопку удалить все строки из первого столбца в datagridview?
Как при нажатий на кнопку удалисть все строки из превого столбца в datagridview ? int count = 0; int rows =...

Как удалить строки, имеющие в первой ячейке любое количество цифр? И как удалить строки по значению первого слова? т.д
День добрый. Могли бы подсказать. Как удалить строки, имеющие в первой ячейке любое количество цифр? Как удалить строки, по первому,...

4
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
18.07.2017, 09:29
Цитата Сообщение от NikolayUh Посмотреть сообщение
После заполнения проводится проверка данных в строках по условию, если данные в определённой ячейке не соответствуют заданным условиям, тогда вся строка удаляется, и продолжается проверка остальных строк таблицы. Изменять саму базу данных не надо, только отображаемые данные в таблице.
В таком случае можно просто присвоить строке, не удовлетворяющей условию, свойство Visible = False

А вообще в этих случаях удобно использовать BindingSource.Filter
VB.NET
1
2
3
4
5
    Dim source1 As New BindingSource()
    source1.DataSource = view1
    datagridview1.DataSource = source1
'Выборка по фильтру:
    source1.Filter = "artist = 'Dave Matthews' OR cd = 'Tigerlily'"
где view1 - это DataTable с данными.
Попробуйте, скорее всего это то, что вам больше подойдет
1
6 / 5 / 1
Регистрация: 02.05.2015
Сообщений: 182
18.07.2017, 16:06  [ТС]
В таком случае можно просто присвоить строке, не удовлетворяющей условию, свойство Visible = False
VB.NET
1
Grid2.Rows(Row.Index).Visible = False
С первого раза код не срабатывает, при повторном запуске кода всё срабатывает, строки становятся невидимыми. При попытке нового поиска выделяется первая ячейка первой строки и выдаёт ошибку - "Строку, связанную с положением CurrencyManager, нельзя сделать невидимой."

Добавлено через 5 минут
А BindingSource.Filter мне не подойдёт, мне нужно выполнить поиск строк которые соответствуют условию, а условие это в зависимости от введённой даты, найти все записи в которых искомая дата входит в заданный период. Пробовал это делать выборкой в запросе к базе данных , так там вообще всю голову сломал пытаясь разобраться, решил всё же загрузить все записи в таблицу а в ней уже отбирать строки соответствующие условию поиска.
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
19.07.2017, 15:22
Цитата Сообщение от NikolayUh Посмотреть сообщение
А BindingSource.Filter мне не подойдёт, мне нужно выполнить поиск строк которые соответствуют условию, а условие это в зависимости от введённой даты, найти все записи в которых искомая дата входит в заданный период. Пробовал это делать выборкой в запросе к базе данных , так там вообще всю голову сломал пытаясь разобраться, решил всё же загрузить все записи в таблицу а в ней уже отбирать строки соответствующие условию поиска.
А какая БД? Есть очень умные, на них чуть ли не программировать можно

Цитата Сообщение от NikolayUh Посмотреть сообщение
С первого раза код не срабатывает, при повторном запуске кода всё срабатывает, строки становятся невидимыми. При попытке нового поиска выделяется первая ячейка первой строки и выдаёт ошибку - "Строку, связанную с положением CurrencyManager, нельзя сделать невидимой."
Ну да, Current-ячейку нельзя сделать невидимой. По умолчанию она становится самой первой ячейкой первой строки. Но ее можно изменить

Кстати можно и удалить RemoveAt вместо Visible. Но это будет уже не фильтр, т.к. удалятся строки и в исходной DataTable.

Что касается первого раза, не знаю, почему не срабатывает. Я бы поставил точку останова да проверил все значения, начиная со строки
VB.NET
1
findDate = CDate(MaskedTextBox1.Text) 'задаём дату для поиска
0
0 / 0 / 0
Регистрация: 19.07.2017
Сообщений: 3
19.07.2017, 16:36
Используй DataView

VB.NET
1
2
3
4
5
6
7
Dim DataView1 as New Dataview
DataView1.Table=Table1
Datagridview1.DataSource=DataView1
 
 
'При изменении условия
DataView1.RowFilter="Column1='Значение'
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.07.2017, 16:36
Помогаю со студенческими работами здесь

Удалить дублирующиеся строки в DataGridView
Надо удалить дублирующиеся строки в dataGridView. Написал так - не получается. public void Remove_Dublicate_From_Grid(DataGridView...

Удалить данные из строки DataGridView
Всем добрый день! Как можно удалить все данные из всех столбцов одной строки в DataGridView более простым способом чем этот: ...

Возможно ли удалить сразу все выделенные строки в DataGridView?
Здравствуйте, есть DataGridView и в ней несколько выделенных строк, возможно ли удалить сразу все выделенные строки, и естественно,если...

Как перенести строки с совпадающей датой из одного datagridview во второй datagridview
Два datagridview, не привязанные к источникам данных. Один из них пустой, другой содержит столбцы, первый столбец содержит данные из...

VS 2008, C++ (Only), DataGridView. Как добавлять и выводить строки с данными в DataGridView в несвязном режиме (без готовой БД)?
Перегуглил всё, что можно. На MSDN нет кода C++. Можно ссылки (только не на С#)


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Компиляция C++ с Clang API
NullReferenced 24.03.2025
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно. . .
Многопоточное программировани­е в C#: Класс Thread
UnmanagedCoder 24.03.2025
Когда запускается приложение на компьютере, операционная система создаёт для него процесс - виртуальное адресное пространство. В C# этот процесс изначально получает один поток выполнения — главный. . .
SwiftUI Data Flow: Передача данных между представлениями
mobDevWorks 23.03.2025
При первом знакомстве со SwiftUI кажется, что фреймворк предлагает избыточное количество механизмов для передачи данных: @State, @Binding, @StateObject, @ObservedObject, @EnvironmentObject и другие. . . .
Моки в Java: Сравниваем Mockito, EasyMock, JMockit
Javaican 23.03.2025
Как протестировать класс, который зависит от других сложных компонентов, таких как базы данных, веб-сервисы или другие классы, с которыми и так непросто работать в тестовом окружении? Для этого и. . .
Архитектурные паттерны микросервисов: ТОП-10 шаблонов
ArchitectMsa 22.03.2025
Популярность микросервисной архитектуры объясняется множеством важных преимуществ. К примеру, она позволяет командам разработчиков работать независимо друг от друга, используя различные технологии и. . .
Оптимизация рендеринга в Unity: Сортировка миллиона спрайтов
GameUnited 22.03.2025
Помните, когда наличие сотни спрайтов в игре приводило к существенному падению производительности? Время таких ограничений уходит в прошлое. Сегодня геймдев сталкивается с задачами совершенно иного. . .
Образование и практика
Igor3D 21.03.2025
Добрый день А вот каково качество/ эффективность ВУЗовского образования? Аналитическая геометрия изучается в первом семестре и считается довольно легким курсом, что вполне справедливо. Ну хорошо,. . .
Lazarus. Таблица с объединением ячеек.
Massaraksh7 21.03.2025
Понадобилась представление на экране таблицы с объединёнными ячейками. И не одной, а штук триста, и все разные. На Delphi я использовал для этих целей TStringGrid, и то, кривовато получалось. А в. . .
Async/await в Swift: Асинхронное программировани­е в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
Колмогоровская сложность: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru