Я плохо выполняю код, который использует Ultragrid, но при выполнении анализа визуализации с использованием D3.js на выходе трассировки я обнаружил, что grid__InitializeRow вызывал себя несколько раз.
Триггер, созданный: this.grid.InitializeRow += new Infragistics.Win.UltraWinGrid.InitializeRowEventHandler(this.grid_InitializeRow);
Проблема начинается с этого кода:
column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, true)
Поиск в Интернете Я не мог найти информацию об этом, но нашел несколько возможных соперников - вызов любого из них вызывает вызов строки инициализации:
Вопросов
заранее спасибо
Я не мог сделать "PerformAutoResize" адекватным. Это займет 10 секунд. Поэтому в конце концов я решил сворачивать свой собственный, что ограничивается нашим конкретным использованием конфигурации сетки, которая отображает только текст в ячейках (в отличие от суб-элементов управления), используя функцию Graphics.MeasureString для каждой ячейки сетки.
Примерно 40 строк кода и сокращено время на 0,4 с для сетки 600 x 20.
Нашел ответ через форумы Infragistics:
Вызов column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, true)
вызывает повторную проверку из источника данных, который, в свою очередь, запускает initialise_row
.
Поскольку изменение размера было вызвано несколько раз (один раз за столбик за полосу), перегруппировки вышли из-под контроля.
Для информации у нас также были следующие проблемы. С данными за год потребовалось 2 минуты для рендеринга:
Надеюсь, это поможет другим с проблемами simiar