У меня есть приложение, которое грузит страницы через Panel AutoLoad
IFrame, думаю все поняли как это делается :)
Однако по моим замерам в любом случае на предварительную загрузку
скриптов и инициализацию уходит 2-3 секунды на средней машине. И само
собой поднимается отдельный extjs singleton и все его скрипты и
прелести, что не есть гуд. До какого-то момента меня это устраивало и
заказчика тоже, но теперь они хотят быстрее и модель "куча фреймов"
себя не оправдала :(
Предварительно я решил перейти на AutoLoad Mode="Merge", что надеюсь
улучшит производительность.
Плюс зная что ExtJS не самый экономный к памяти и процессору фреймворк
(я как то писал на нем проект) и отжирает кучу всег (рекорд 2 гига
памяти в FireFox). И само собой Ext.NET тоже "унаследовал" данную
проблему, но думаю уйдя от фреймов я пожалею нервы и время
пользователей :)
Вопрос такой, какие вы порекомендуете средства для оптимизации в общем
и как для этих целей подходит Mode="Merged"? И насколько я понимаю,
все удобство работы с уникальными ID контролов при таком способе
уйдет?
Пример
- Страница http://pastebin.com/h2DkMGPt
- Хендлер http://pastebin.com/Wz8HHc0K
- User Control 1 http://pastebin.com/JmuPVNXM
- User Control 2 http://pastebin.com/ssnphXKy
- User Control 3 http://pastebin.com/M1w4A49z
Ext.Net.UserControlRenderer ещё не совсем удобный в плане
использования (будет значительно улучшен в версии 2), но вы можете
допилить его сами под ваши нужды, там очень простой код
К примеру, если хотите использовать одинаковые айдишники в юзер
контролах и избежать конфликтов, то надо вручную присвоить уникальный
ID для юзер контрола внутри метода Build (сейчас используется
автоматический GUID) и поставить IDMode="Parent" для топового виджета.
В этом случае, ID виджетов на клиенте будут иметь вид
"UserControlID_WidgetID"
public virtual string Build(string userControlPath, string
controlIdToRender, RenderMode mode, string element, int? index)
{
string id = "ID_" + Guid.NewGuid().ToString().Replace("-",
""); // you can change Build method signature and pass own user
control id
А использование DirectEvent и DirectMethod в данном способе
реализуемо? Просто они делают разработку намного проще.
И в чем отличие предложенного метода от AutoLoad Merge?
On 13 июл, 23:27, quirkmind <vscheg...@gmail.com> wrote:
> Я не понимаю любви к фреймам. Да, есть случаи когда они удобно, но
> огульно их использовать не стоит (ибо это тяжело для браузера)
> Ext.Net умеет динамически рендерить контролы поэтому фреймы можно
> заменить юзер контролами (типа вьюхи в MVC (упрощено))
>
> Пример
>
> - Страницаhttp://pastebin.com/h2DkMGPt
> - Хендлерhttp://pastebin.com/Wz8HHc0K
> - User Control 1http://pastebin.com/JmuPVNXM
> - User Control 2http://pastebin.com/ssnphXKy
> - User Control 3http://pastebin.com/M1w4A49z
Никакого отличия от AutoLoad Merge нет, он и работает в данном случае,
просто мы возвращает скрипт, который выполняется на клиенте (и
никакого html)
2)Как можно получить доступ к ResourceManger в пользовательском
контроле?
По поводу ресурс менеджера, зачем он вам в том юзер контроле? Тот юзер
контрол оторван от серверной страницы (не знает её, да она и
уничтожена давно потому что уже отренедерена) и рендерит только свой
код
On 21 июл, 13:22, Саят Абузов <abuz...@gmail.com> wrote:
> 1)У меня имеется следующая проблема при отработке пользовательского
> контролаhttp://pastebin.com/6szMAw6wне отрабатывается блок кода
> (<content> в северной панели(он закомментен))
> выдает следующую ошибку Error executing child request for handler
> 'Ext.Net.SelfRenderingPage'.http://pastebin.com/cSL6tcYU-страницаhttp://pastebin.com/VZc7USpV-хэндлерhttp://pastebin.com/6szMAw6w-контрол
On 5 сен, 20:39, Daulet Urazalinov <d.urazali...@gmail.com> wrote:
> Для TabPanelhttp://pastebin.com/RBLPUAkx
>
> Для просто обновления уже существующей страницыhttp://pastebin.com/dkBJ5x3A
On 5 сен, 21:02, Daulet Urazalinov <d.urazali...@gmail.com> wrote:
> Это для TabPanelhttp://pastebin.com/1Yg60AGG
>
> Это для Panelhttp://pastebin.com/aMSs6FMw