Реализация общего сохранения данных, сортировки и ресайзинга столбцов
Сегодня день не отличился большим объёмом проделанной работы. Всё идет очень сложно и тяжело. Непросто даётся каждый шаг, каждая функция. Первым делом, с утра, реализовал функцию по общему сохранению всех измененных данных в таблице. Тут было не особо трудно. Нужно было только пройтись циклом по рядам таблицы и для каждого ряда получить SQL-запрос на модификацию данных. Ну а далее пошла трудоёмкая работа. Это ресайзинг столбцов представления таблицы и сортировка порядка расположения этих столбцов с сохранением этого состояния в файл кэша проекта с последующим его восстановлении при последующем запуске программы. Вот тут-то было не мало сложностей.
И на эти две функции я потратил почти целый день. И управился только к настоящему моменту. Были сложности с упорядочиванием столбцов. Пришлось долго копаться. Далее нужно было сохранить текущее состояние столбцов в свойство объекта, которое далее будет сериализовано и сохранено в файл кэша. Там я не мало намаялся с поиском способа сохранения этого состояния в момент завершения ресайзинга столбцов. Нет в контроле Авалонии 'DataGrid' обработчиков событий, вызывающихся при ресайзинге столбцов. Вот нету и всё тут. Такие вот пироги. Пришлось создавать импровизированный способ определить, когда ширина столбцов меняется. Но увы, способ этот не совсем идеальный. Тут я обработчик изменения значения свойства привязал к свойству ширины столбца. Обработчик этот срабатывает при ресайзинге столбцов и позволяет мне сохранить в кэше их состояние. Но. Проблема тут заключается в том, что обработчик это срабатывает странным образом и во время скроллинга содержимого таблицы, что негативным образом сказывается на производительности программы.
Но тут у меня был вообще фатальный случай. Я уже на минуту подумал, что всей программе капец и всё накрылось медным тазом. Дело в том, что к этому обработчику изменения ширины столбцов я добавил таймер с задержкой вызова привязанной функции реагирования на это изменение ширины. И привело это к тому, что при прокрутки содержимого таблицы программа вообще намертво зависала и висела так, ни на что не реагируя. Я подумал, что всё сломал. Но, к счастью, догадался убрать эту задержку. Ну а после этого таких зависаний уже не стало. Но всё-равно нагрузка и небольшие подтормаживания есть. Нужно будет подумать, как это можно улучшить и над лучшим способом детектирования ресайзинга столбцов. Так что вот так.
Ну и на этом пора мне заканчивать на сегодня. Так что у меня всё и теперь уже до следующих постов и до новых свершений. Завтра начну клепать функции, прикреплённые к рядам таблицы. Это удаление рядов, вычисление значений по калькулятору и т.п.

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.