Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
1

Как подсчитать строки в Datagrid?

21.06.2018, 18:53. Показов 815. Ответов 28
Метки нет (Все метки)

Добрый день, не могли бы подсказать как реализовать подсчет строк с определенным значение в Datagrid так проверяю элементы на совпадение
C#
1
2
3
4
5
6
7
foreach (DataGridViewRow row in dataGridView6.Rows)
                {
                    if (row.Cells[1].Value.ToString() == tarif[i])
                    {
 
                    }
                }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.06.2018, 18:53
Ответы с готовыми решениями:

Подтверждение при удалении строки из datagrid
как это осуществить?

Как при нажатии на кнопку уменьшить числовое значение определенного столбца выбранной строки в DataGrid
Имеется кнопка на форме, а также таблица. В таблице выбран SelectionMode=FullRowSelect; Когда...

Выделение строки в dataGrid
Для dataGridView можно задать следующее свойство: dataGridView1.SelectionMode =...

Удаление строки из dataGrid
Подскажите как реализовать с помощью кнопки удаление строки из таблицы, а также скажите в чем...

__________________

Записывайтесь на профессиональные курсы С#-разработчиков‌
28
Модератор
Эксперт .NET
5304 / 4100 / 1183
Регистрация: 12.10.2013
Сообщений: 11,909
Записей в блоге: 2
21.06.2018, 19:16 2
Цитата Сообщение от menafis Посмотреть сообщение
как реализовать подсчет строк с определенным значение в Datagrid
Зачем считать в гриде? Считайте в источнике, из которого грид заполняется.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
21.06.2018, 22:02  [ТС] 3
insite2012, есть вообще возможность считать именно в гриде

Добавлено через 32 минуты
insite2012, так сказать напрямую из БД это давольно таки проблематично
0
70 / 66 / 47
Регистрация: 02.12.2015
Сообщений: 819
Записей в блоге: 1
21.06.2018, 23:47 4
У грида есть такое событие RowPostPaint например :
C#
1
2
3
4
5
6
7
8
9
int countString = 0;
        private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
        {
            if (dataGridView1.Rows[e.RowIndex].Cells[3].Value != null)
            if ((int)dataGridView1.Rows[e.RowIndex].Cells[3].Value == 32)
                count++;
            //       
            
        }
но лучше как было сказано считать в источнике данных.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
22.06.2018, 02:22  [ТС] 5
aleksskay4, попробую, как вы сказали, просто изначально была другая задача но она изменилась, точнее даполнилась и есть уже подготовленный datagrid, можно же так нашел совпадение записал 1 в переменную, потом пошел циклом по строкам и если есть совпадение добавил 1 и так пока не сработает исключение итог вывел и обнулил переменную, и заново. завтра попробую воспроизвести, что получиться напишу
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
22.06.2018, 04:10 6
menafis, что значит «напрямую в БД проблематично»? Если в БД проблематично, то читайте в выборке, которую вы из этой БД получили и которую ваш грид отображает. А сам грид не трогайте, в нём только нубы что-то считают.
0
210 / 114 / 17
Регистрация: 01.06.2018
Сообщений: 1,749
22.06.2018, 05:21 7
Цитата Сообщение от menafis Посмотреть сообщение
C#
1
2
3
4
5
6
foreach (DataGridViewRow row in dataGridView6.Rows)
{
    if (row.Cells[1].Value.ToString() == tarif[i])
    {
    }
}
Используя ваш же код
C#
1
2
3
4
5
6
7
8
public static int count = 0;
foreach (DataGridViewRow row in dataGridView6.Rows)
{
    if (row.Cells[1].Value.ToString() == tarif[i])
    {
        count++;
    }
}
Добавлено через 35 секунд
Цитата Сообщение от Usaga Посмотреть сообщение
А сам грид не трогайте, в нём только нубы что-то считают.
правда хочу узнать, почему?
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
22.06.2018, 05:38 8
Цитата Сообщение от belalugoci Посмотреть сообщение
правда хочу узнать, почему?
Потому, что у вас уже есть данные в удобном для работы виде (DataTable, IList<T> или просто массив). И они не в DataGrid, а в его свойстве DataSource. Контрол их только визуализирует. Если ваша задача не касается визуальной части, то и лезть в контрол не надо.
1
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
22.06.2018, 08:07  [ТС] 9
Usaga, проблематично в том что у меня выборка идет в один грид, потом в зависимости от поля результат дробиться на две таблицы, потом идет вывод в excel. Вот и теперь инфа которая уже структурирована как надо в двух таблицах и должна послужить основой.
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
22.06.2018, 08:09 10
menafis, ничего не понял. Если есть выборка, то в ней и ищите. Если выборка "раздроблена" на две таблицы, то ищите в "раздробленных" данных. В чём проблема-то?
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
22.06.2018, 08:17  [ТС] 11
Usaga, структура такая, что идет составной запрос, результат запроса заноситься в датагрид, в самом датагриде идет проверкана статус 1,0...в результате формируются свои датагриды, в них уже идет фильтрация по тарифу, в итоге у нас 5 таблиц в данным которые нужны в отчете. Как вы и говорили до этого использовал датагрид только для визуализации.

Добавлено через 23 секунды
belalugoci, попробую
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
22.06.2018, 08:20 12
menafis, я всё равно не понял, что вам мешает работать с исходными данными, а не рыться в датагриде.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
22.06.2018, 08:21  [ТС] 13
Usaga, в самом же запросе в БД идет констркция SELECT....From....Iner join...on... и дальше условия, то есть выборка идет по 4 связанным таблицам, при условиях значения в полях.
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
22.06.2018, 08:25 14
menafis, и что? Вы на руки получаете DataTable с результатом этого запроса, так? Что вам мешает в нём поиск нужных строк производить?
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
22.06.2018, 10:56  [ТС] 15
Usaga, понял вас, буду делать

Добавлено через 36 минут
Usaga, можете привести пример как это сделать?
0
210 / 114 / 17
Регистрация: 01.06.2018
Сообщений: 1,749
22.06.2018, 11:02 16
Цитата Сообщение от menafis Посмотреть сообщение
можете привести пример как это сделать?
Предложенный вариант Usaga будет работать только если у вас всё приложение построено по модели Данные+Отображение, тут Отображением как раз будет dataGrid, а вот есть у вас Данные мы не знаем. Если нет, то программу нужно переделать, а если есть, то блок, где вы получаете данные и используйте для манипуляции с ними. Не видя кода вашей программы определенно сказать ничего не могу.
0
Эксперт .NET
8861 / 6172 / 1029
Регистрация: 21.01.2016
Сообщений: 23,320
22.06.2018, 11:03 17
menafis, что сделать?

Добавлено через 24 секунды
Цитата Сообщение от belalugoci Посмотреть сообщение
а вот есть у вас Данные мы не знаем.
Есть) Грид же их и показывает)
1
210 / 114 / 17
Регистрация: 01.06.2018
Сообщений: 1,749
22.06.2018, 11:08 18
Цитата Сообщение от Usaga Посмотреть сообщение
Есть) Грид же их и показывает)
они в гриде же хранятся? если он динамически создавал что-то и заталкивал в грид, то данные только в гриде и есть.
0
3 / 3 / 2
Регистрация: 26.02.2014
Сообщений: 481
22.06.2018, 11:16  [ТС] 19
belalugoci, Usaga, Usaga прав данные есть, он хранятся в datatable , вот что получилось в итоге
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
   dataGridView6.DataSource = vmeste;
                object sumObject;
                podschet.Columns.Add("Упоминаний за месяц");
                podschet.Columns.Add("Тариф");
                podschet.Columns.Add("Сумма наличным");
                podschet.Columns.Add("Сумма безналичным");
                for (int i = 0; i < dataGridView6.Rows.Count - 1; i++)
                {
                    
                    sumObject = vmeste.Compute("Count(Тариф)", "Тариф = '" + dataGridView6.Rows[i].Cells[1].Value.ToString() + "'");
                    podschet.Rows.Add(sumObject,dataGridView6.Rows[i].Cells[1].Value.ToString());
                }
                dataGridView7.DataSource = podschet;
0
210 / 114 / 17
Регистрация: 01.06.2018
Сообщений: 1,749
22.06.2018, 11:24 20
Цитата Сообщение от menafis Посмотреть сообщение
Usaga прав данные есть, он хранятся в datatable , вот что получилось в итоге
Только пока вы от нас их прячете и упорно всю работу делаете в dataGrid.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2018, 11:24

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Узнать номер строки в datagrid
Здравствуйте! есть на форме datagridview, как мне узнать номер выделенной строчки. Т е я нажимаю на...

Вывод строки в DataGrid в зависимости от индекса в NumericUpDown
добрый день, есть button , DataGridView , NumericUpDown, в зависимости от индекса стоящего в...

Удаление строки в mdb напрямую (без DataGrid)
Visual C# Проблема такая, работаю с базой данных mdb напрямую (Без DataGreed). Мне надо удалить...

Как перед выводом DataGrid на экран прочитать данные из первой ячейки каждой строки?
Как перед выводом DataGrid на экран прочитать данные из первой ячейки каждой строки?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.