Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/16: Рейтинг темы: голосов - 16, средняя оценка - 4.56
136 / 136 / 46
Регистрация: 21.04.2009
Сообщений: 178
1

Фильтр в datagridview: повторная фильтрация исходных, а не уже отфильтрованных данных

12.06.2012, 19:09. Показов 3126. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Коллеги, такой вопрос:
Есть datagridview(dgv_MAIN_substitution), на нем у меня вызываеться контекстное меню(dgv_menu). По клику на один из элементов меню у меня происходит фильтрация в моем датагриде. Вот то что я делаю по клику на айтеме моего меню:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        void dgv_menu_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            DataTable dt = dgv_MAIN_substitution.DataSource as DataTable;
            ToolStripItem item = e.ClickedItem;
            switch (item.Text)
            {
                case "Filter By Selection":
                    dt.DefaultView.RowFilter = string.Format("[{0}] = '{1}'", dgv_MAIN_substitution.Columns[hitTestInfo.ColumnIndex].Name, dgv_MAIN_substitution.Rows[hitTestInfo.RowIndex].Cells[hitTestInfo.ColumnIndex].Value); break;
                case "Filter Excluding Selection":
                    dt.DefaultView.RowFilter = string.Format("[{0}] <> '{1}'", dgv_MAIN_substitution.Columns[hitTestInfo.ColumnIndex].Name, dgv_MAIN_substitution.Rows[hitTestInfo.RowIndex].Cells[hitTestInfo.ColumnIndex].Value); break;
                case "Remove Filter/Sort":
                    dt.DefaultView.RowFilter = string.Format("[{0}] LIKE '%%'", dgv_MAIN_substitution.Columns[hitTestInfo.ColumnIndex].Name); break;
                case "Sort Asceding":
                    dt.DefaultView.Sort = string.Format("[{0}] Asc", dgv_MAIN_substitution.Columns[hitTestInfo.ColumnIndex].Name); break;
                case "Sort Desceding":
                    dt.DefaultView.Sort = string.Format("[{0}] Desc", dgv_MAIN_substitution.Columns[hitTestInfo.ColumnIndex].Name); break;
                               default:  break;
            }
            dgv_MAIN_substitution.DataSource = dt;
       }
Фильтр срабатывает, все отлично!
Кликнув на айтем, я получил в гриде отфильтрованные данные. Проблема в том, что применив фильт еще раз, он фильрует не на основе ранее полученных данных предыдущего фильтра, а на основе изначального источника данных для грида. То есть я хочу повторно отфильтровать то, что уже отфильтровано в гриде Как это лучше сделать? Работать через DataView? Как это должно выглядеть? В данном случае я все время по клику работаю с DataSource. А как работать с новым "отфильтрованным" DataSource? Натолкните на мысль плиз.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.06.2012, 19:09
Ответы с готовыми решениями:

Фильтрация в уже отфильтрованных данных
Как сделать фильтрацию в периоде дат? т.е. сначала делается фильтрация диапазона дат, а потом в...

Фильтрация данных в datagridview
Добрый день, есть dgv заполненный данным, хочу его отфильтровать, написал следующий код: private...

Фильтрация данных с DataGridView
Следующий код выдает ошибку &quot;№ абонента&quot;- столбец в базе имеет тип счетчик string s = &quot;№...

Фильтрация данных в DatagridView
Нужно реализовать в Datagridview возможность, по необходимости фильтровать в моем случае &quot;Заявки&quot;...

1
Эксперт Java
4092 / 3826 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
13.06.2012, 21:43 2
Возможно стоит не заново менять значение фильтра, а добавлять новое условие через and.
Примерно так:
C#
1
2
3
4
string prevFilter = dt.DefaultView.RowFilter;
if (!string.IsNullOrEmpty(prevFilter))
   prevFilter += " and ";
dt.DefaultView.RowFilter = prevFilter + string.Format("[{0}] = '{1}'", dgv_MAIN_substitution.Columns[hitTestInfo.ColumnIndex].Name, dgv_MAIN_substitution.Rows[hitTestInfo.RowIndex].Cells[hitTestInfo.ColumnIndex].Value);
0
13.06.2012, 21:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2012, 21:43
Помогаю со студенческими работами здесь

Фильтрация выводимых в datagridview данных
Здравствуйте. Есть два datagridview, связанные по полю ID. Во тором gride есть колонка содержащая...

Фильтрация данных в DataGridView по дате
Необходимо, что бы при нажатии на btn происходила фильтрация данных по дате указанной в textbox....

Фильтр данных в DataGridView
Вечер добрый! Помогите разобраться. Есть у меня форма, нужно сделать так, чтобы при выборе варианта...

Фильтр базы данных Access в DataGridView
Помогите сделать фильтрацию базы данных Access связанной с DataGridView. Не могу понять в чем...

DataGridView и фильтрация данных. Как реализовать средствами VB.net?
Доброго времени суток, коллеги! На форме DataGridView с заполненными данными. Столбец 0 -...

Фильтрация данных в DataGridView в зависимости от значения в txtBox по событию TextChanged
Здравствуйте! Имеется форма с двумя TextBox (textBox1 и textBox2), а также DataGridView (dgvAll)...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru