Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
0 / 0 / 0
Регистрация: 09.07.2021
Сообщений: 7
WPF

Datagrid сумма выделенных ячеек вне видимисти диапазона

09.07.2021, 12:43. Показов 3583. Ответов 26

Студворк — интернет-сервис помощи студентам
Доброго времени.
Не могу победить одну вещь. Прощу помощи.
Есть DataGrid с заполненными столбцами (дата, приход, раход, товар). В таблице 250 строк, на экране пользователь видит только 35 строк, есть скролл. Пользователь выделяет не все ячейки а только нужный ему диапазон (столбцы 2 и 3) с 15 строки и скролом крутит до 100 строки. Как вывести сумму выделенного диапазона?

Пробовал с помощью DataGrid SelectedCellsChanged и в цикле по DataGrid.SelectedCells суммировал данные, но суммировались только те данные, которые попадали в зону отображения DataGrid. Все что было выделено и проскролено не попало в суммирование. Есть ли другой способ решить задачку?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.07.2021, 12:43
Ответы с готовыми решениями:

Копирование выделенных ячеек DataGrid
Есть такое <DataGrid Name="SpecTable" AutoGenerateColumns="False" ...

Суммирование выделенных ячеек в datagrid
Имеется код который суммирует выделенные ячейки в датагриде и заносит ответ в текстбокс. Но ругается на то что в датагриде имеется...

Как заместо диапазона A1:B5 сделать диапазон выделенных ячеек
Sub Start() FC Range("A1:B5") End Sub Sub FC(Rg As Range) Dim srznach As Double srznach = 0 Dim arr()

26
 Аватар для Andrey-MSK
3397 / 2283 / 388
Регистрация: 14.08.2018
Сообщений: 7,767
Записей в блоге: 4
12.07.2021, 11:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Элд Хасп Посмотреть сообщение
что сам не проверял
Я тоже не проверял.
0
0 / 0 / 0
Регистрация: 09.07.2021
Сообщений: 7
12.07.2021, 11:47  [ТС]
То, что предлагает Andrey-MSK, что-то было похожее у меня было на уме (создать отдельную коллекцию, куда бы записывался массив выделенных данных при изменении выделения диапазона), но тут момент другой: если пользователь выделил 250 строк одного столбца (допустим 200 из них вне зоны видимости) и протянул выделение еще на два столбца (получилось выделенных 750 ячеек), как в такой ситуации будет отрабатываь.
Вобщем пошел пробовать - по результату отпишусь.
Спасибо ребята.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
12.07.2021, 11:55
Цитата Сообщение от borik001 Посмотреть сообщение
То, что предлагает Andrey-MSK, что-то было похожее у меня было на уме
Это обычная привязка свойства "только для чтения".
Есть много различных реализаций.
По большому счёту она даже не нужна.
В VM есть команда получающая в параметре лист SelectetItems.
В представлении команда биндинтся или на кнопку, или на событие SelectionChanged.

Выделенные строки в этом листе ВСЕ.
Независимо от их визуализации.

А вот с выделенными ячейками (SelectedCells) проблема.
Так как не все выделенные ячейки (по вашим словам) входят в этот лист.
0
1596 / 601 / 185
Регистрация: 05.12.2015
Сообщений: 970
12.07.2021, 16:35
я попробовал и не нашел никаких проблем.
все нормально работает в любом режиме
в DataGrid подключить обработчик SelectedCellsChanged="cellsChanged"
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  private void cellsChanged( object sender, SelectedCellsChangedEventArgs e )
        {
            DataGrid dg = (sender as DataGrid);
            int summa = 0;
            foreach( DataGridCellInfo cell in dg.SelectedCells )
                if( cell.Column is DataGridBoundColumn col )
                {
                    string propname = (col.Binding as Binding).Path.Path;
                    object value = cell.Item.GetType().GetProperty( propname ).GetValue( cell.Item );
                    if( value is int number )
                        summa += number;
                }
            counter.Text = summa.ToString();
        }
это общий случай для суммы всех клеток с типом int
2
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16166 / 11286 / 2892
Регистрация: 21.04.2018
Сообщений: 33,177
Записей в блоге: 2
12.07.2021, 16:48
Цитата Сообщение от proa33 Посмотреть сообщение
я попробовал и не нашел никаких проблем.
borik001, чё скажете?
Так есть проблемы или нет?
1
0 / 0 / 0
Регистрация: 09.07.2021
Сообщений: 7
12.07.2021, 19:58  [ТС]
Супер. Спасибо Большое!
0
0 / 0 / 0
Регистрация: 09.07.2021
Сообщений: 7
13.07.2021, 11:16  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
private void DG_SelectedCellsChanged_1(object sender, SelectedCellsChangedEventArgs e)
        {
 
            DataGrid dg = (sender as DataGrid);
            double summa = 0, Num = 0;
            foreach (DataGridCellInfo cell in dg.SelectedCells)
                if (cell.Column is DataGridBoundColumn col)
                {
                    string propname = (col.Binding as Binding).Path.Path;
 
                    DataRowView value1 = cell.Item as DataRowView;
                    string str = value1[propname].ToString();
                    if (double.TryParse(str, out Num)) { } else { Num = 0; }
                    summa += Num;
                }
            TB_summSelected.Text = summa.ToString();
            
        }
proa33, Спасибо большое. Немного изменил ваш код под себя. Почему-то
C#
1
object value = cell.Item.GetType().GetProperty( propname ).GetValue( cell.Item );
постоянно выдавал null

Сейчас все работает отлично. Еще раз всем большое спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.07.2021, 11:16

Сумма значений выделенных ячеек (Excel)
помогите пожалуйста! совсем не помню как программировать в экселе. надо сделать так, чтобы выделить числа в некой таблице в любой части...

Сумма выделенных ячеек в виде формулы
Подскажите, пожалуйста, как сделать, чтобы после выделенных ячеек появлялась ячейка с формулой СУММ выделенного диапазона?? Аналог...

DataGrid - сумма чисел доступных ячеек
Доброго времени суток,прошу у Вас помощи. Работаю в Visual Studio 2019 , у меня имеется DataGridView для вывода информации из таблицы БД...

Сумма диапазона ячеек в столбце и запись итога в последнюю свободную строку
Здравствуйте, скажите как посчитать сумму в столбце (Лист 3, столбец F), если в нем уже есть данные, нужно найти первую свободную ячейку в...

Удалить пробелы в начале и конце ячеек выделенных столбцов ячеек
Доброй ночи! Имеется excel файл с большим количеством страниц, строк и столбцов. В ячейках: Перед началом слов и после них...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru