03.06.2010, 16:44 | #1 |
Участник
|
Тормозит грид
Доброго времени суток, уважаемые!
Поискал такую тему, но не нашел; прошу извинить, если окажется, что искал плохо. Дело в следующем. Вывел в одном гриде две таблицы (CustPackingSlipJour и CustPackingSlipTrans, отборочные накладные продажи), со связью Inner Join. Записей в каждой под тысячу; строк чуть больше (понятное дело). Грид помещен на новую вкладку в форме "Журнал отборочных накладных" (CustPackingSlipJournal). Датасорсы созданы новые, только для этого грида. Всего 22 поля в гриде. Только нормальные поля, без методов. Среди полей есть добавленные нами. В результате - ЖУТКИЕ ТОРМОЗА. Грид заполняется уныло-построчно; после прорисовывания всех строк, что помещаются на форму, можно начинать что-то делать - но при этом переход на другую строку клавишей "Вниз" занимает чуть меньше секунды, а прокручивание колеcом мышки становится вообще неоперабельным. Если удалять поля из грида - начинает работать быстрее, и, после оставления, скажем, всего 4-х полей (по 2 из каждой таблицы) - практически нормально. Самая фича: замечено, что если что-нибудь сделать с формой (свернуть/развернуть, изменить ширину столбца в гриде, изменить размер окна формы) - то после этого грид начинает работать нормально и продолжает это делать, пока не закроешь форму. Поэтому технология работы сейчас такая: щелчок по вкладке, сразу щелчок по "Свернуть", ждем несколько секунд, пока по инерции допрорисуются первые несколько строчек, потом форма сворачивается, восстанавливаем ее - и можно работать. На другой базе (раза в 2 побольше записей) тот же объект не вызывает уже жутких тормозов, но тоже явно немного подтормаживает, что также лечится вышеописанным образом. Подскажите, пожалуйста, в чем тут дело и как с этим бороться. Последний раз редактировалось Geo; 03.06.2010 в 16:48. |
|
12.04.2011, 20:36 | #2 |
Участник
|
Неужели даже не сталкивался с таким никто?
Совершенно четко: грид после открытия работает с большими тормозами, но после любых изменений формы начинает практически летать... Сделал так: на метод active() датасорса повесил изменение размера одного из полей грида (поле.width()). Заодно пришлось добавить переменную и проверять ее значение в active(), чтобы отрабатывать только один раз (т.к. active() вызывается постоянно). Теперь при открытии формы строки в гриде появляются с видимой задержкой, но потом ррраз - и всё начинает летать. Однако выглядит это достаточно топорно. Может, кто-то подскажет лучший способ? Есть ли такой метод, который бы вызывался уже при открытой форме, но до прорисовки всех строк в гриде? Пробовал вешать отработку на грид.gotFocus() - но он почему-то вообще не вызывался. |
|
12.04.2011, 21:04 | #3 |
Axapta
|
Не это?
|
|
|
За это сообщение автора поблагодарили: Geo (2). |
12.04.2011, 22:47 | #4 |
Участник
|
|
|
12.04.2011, 22:56 | #5 |
Axapta
|
В Бельгии, кажется. Не обратил сначала внимание на дату первого поста. Это вы 10 месяцев с этим вопросом разбирались?
|
|
12.04.2011, 23:38 | #6 |
Участник
|
Цитата:
(А тема про автоопределение ширины появилась позже моего вопроса, оказывается. Я ее смотрел, но про свой давний вопрос не вспомнил. Отчасти потому, что описанные там симптомы не очень совпадали с моими. А сейчас свежим взглядом глянул - ба! ))) |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Фокус Grid (определить под фокусом ли грид) | 4 | |||
Тормозит форма складских проводок | 9 | |||
display метод тормозит | 4 | |||
грид обновляется | 1 | |||
Добавление столбца в грид на PurchQuickQuote | 1 |
|