powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
14 сообщений из 14, страница 1 из 1
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36937107
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер :)

Каким образом лучше организовать динамическое создание вкладок на TabContainer с различным контекстом (т.е на каждую вкладку в зависимости от ее типа будет встраиваться свой юзер контрол). Также необходимо предусмотреть удаление вкладок.

При создании вкладок и их хранении проблем нет - инфу о созданных вкладках держу во viewstate(и обновляю при лоаде updatepanel на которой находится табконтейнер), проблемы начинаются при удалении а именно сбрасывается информация которая лежит на последующих вкладках после удаляемой.
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36937111
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема решается если не удалять вкладки а скрывать их при onLoad на UpdatePanel, но это решение смотрится явно дико
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36937563
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36937747
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newDealer,

по-моему, отличное решение. посоветовала бы почитать одну статью на gotdotnet про динамически добавляемые контролы, не могу найти ссылку...
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36938010
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZorianewDealer,

по-моему, отличное решение. посоветовала бы почитать одну статью на gotdotnet про динамически добавляемые контролы, не могу найти ссылку...

Тут просто проблема в том что фактически ничего не удаляется. Т.е на каждом OnLoad на UpdatePanel мы воссоздаем все в том числе и удаленные вкладки, разница лишь в том что они невидимые. В итоге состояние контента(контролов) расположенных на этих вкладках постоянно увеличивается, и увеличивается соотвественно ViewState, хранящий состояние этих контролов. Если же эти вкладки удалять то ViewState неверно загружается, т.е удалили вкладку 4 например ее содержимое с удовольствием поехало на вкладку 5 и т.д.
На своих контролах переопределять их состояние при загрузке вообще не хочется (это будет еще тот огород :( ) . Должно быть явно красивое решение по этому поводу, на забугорных сайтах его к сожалению не нашел.
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36938017
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забавный баг, показывающий детали сохранения вьюстейт.
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36938020
Zoria
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
newDealer В итоге состояние контента(контролов) расположенных на этих вкладках постоянно увеличивается, и увеличивается соотвественно ViewState, хранящий состояние этих контролов.
этот момент мне не ясен - почему постоянно увеличивается?
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36938030
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZorianewDealer В итоге состояние контента(контролов) расположенных на этих вкладках постоянно увеличивается, и увеличивается соотвественно ViewState, хранящий состояние этих контролов.
этот момент мне не ясен - почему постоянно увеличивается?

Потому что при UpdatePanel load я воссоздаю вкладки , загружаю их из некой List<keyValuePair<objname, visible>>(лежащей во ViewState) хранящей имя вкладки и признак видимости. т.е я коллекцию не чищу а воссоздаю ее --> при удалении вкладки теряется ее видимость
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36939377
проверка
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36939410
stamford_User
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Советую отказаться от вюстейта - по многим причинам - производительность в том числе.
Ниже кусок кода.
Для управления вкладками который создаются и пересоздаются на лету испольщуется менеджер основанный на сессия и кеше.
Так этот код сразу работать не будет - но думаю понять куда копать - можно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public void CreateTab(TabContainer parent, string welcomeMsg, string headerText, string pathControl, int activeIndex, bool needCloseButton, int param, int param2)
        {
            var welcomeLiteral = new LiteralControl();
            welcomeLiteral.Text = welcomeMsg;
            TabPanel WelcomeTab = new TabPanel();
            if (needCloseButton)
                WelcomeTab.HeaderTemplate = new DynamicallyCreatedTemplate(ListItemType.Header, headerText);
            else
                WelcomeTab.HeaderText = headerText;

            WelcomeTab.Controls.Add(welcomeLiteral);

            var control = LoadControl(pathControl);
            if (control is SnglNmCtrl)
                ((SnglNmCtrl)control).setInstrumentID(param);
            else if (control is CdsCntrctCtrl)
                ((CdsCntrctCtrl)control).setRequiredValues(param, param2, ref parent);
            else if (control is CdsIndxCtrl)
                ((CdsIndxCtrl)control).setRequiredValues(param, parent, this.dType[0]);
            else if (control is IndxTrancheCtrl)
                ((IndxTrancheCtrl)control).setRequiredValues(param, param2, this.dType[0]);
            else if (control is AddEditIndexComponentCtrl)
            {
                ((AddEditIndexComponentCtrl)control).setRequiredValues(param, this.typeWindow, ref parent);
                ((AddEditIndexComponentCtrl)control).ID = "AddEditIndexComponentCtrl1";
            }
            else if (control is IndxComponentCtrl)
            {
                ((IndxComponentCtrl)control).setRequiredValues(param, "onIndexComponentsLoad", parent);
                ((IndxComponentCtrl)control).ID = "IndxComponentCtrl1";
            }

            //

            WelcomeTab.Controls.Add(control);

            parent.Tabs.Add(WelcomeTab);

            parent.ActiveTabIndex = activeIndex;

        }
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36939753
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stamford_UserСоветую отказаться от вюстейта - по многим причинам - производительность в том числе.
Ниже кусок кода.
Для управления вкладками который создаются и пересоздаются на лету испольщуется менеджер основанный на сессия и кеше.
Так этот код сразу работать не будет - но думаю понять куда копать - можно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
public void CreateTab(TabContainer parent, string welcomeMsg, string headerText, string pathControl, int activeIndex, bool needCloseButton, int param, int param2)
        {
            var welcomeLiteral = new LiteralControl();
            welcomeLiteral.Text = welcomeMsg;
            TabPanel WelcomeTab = new TabPanel();
            if (needCloseButton)
                WelcomeTab.HeaderTemplate = new DynamicallyCreatedTemplate(ListItemType.Header, headerText);
            else
                WelcomeTab.HeaderText = headerText;

            WelcomeTab.Controls.Add(welcomeLiteral);

            var control = LoadControl(pathControl);
            if (control is SnglNmCtrl)
                ((SnglNmCtrl)control).setInstrumentID(param);
            else if (control is CdsCntrctCtrl)
                ((CdsCntrctCtrl)control).setRequiredValues(param, param2, ref parent);
            else if (control is CdsIndxCtrl)
                ((CdsIndxCtrl)control).setRequiredValues(param, parent, this.dType[0]);
            else if (control is IndxTrancheCtrl)
                ((IndxTrancheCtrl)control).setRequiredValues(param, param2, this.dType[0]);
            else if (control is AddEditIndexComponentCtrl)
            {
                ((AddEditIndexComponentCtrl)control).setRequiredValues(param, this.typeWindow, ref parent);
                ((AddEditIndexComponentCtrl)control).ID = "AddEditIndexComponentCtrl1";
            }
            else if (control is IndxComponentCtrl)
            {
                ((IndxComponentCtrl)control).setRequiredValues(param, "onIndexComponentsLoad", parent);
                ((IndxComponentCtrl)control).ID = "IndxComponentCtrl1";
            }

            //

            WelcomeTab.Controls.Add(control);

            parent.Tabs.Add(WelcomeTab);

            parent.ActiveTabIndex = activeIndex;

        }

Спасибо за код но проблема останется, как создавать таб панели и как добавлять на них динамически контент я знаю. проблема со Viewstate этих динамически создаваемых контролов (см.выше)
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36941091
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
up
...
Рейтинг: 0 / 0
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #36953150
newDealer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
one more up xD
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
    #37779862
Trus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
newDealerкак создавать таб панели и как добавлять на них динамически контент я знаю.
скажите пожалуйста как это делается--маленький примерчик если можно.
и как программно можно перейти от tabpanel к tabpanel в tabkontainer?
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ajaxcontroltoolkit - динамичкское создание вкладок на TabContainer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]