Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите, пожалуйста, по вопросу... На форме имеется статический DropDownList с данными из БД. В зависимости от выбора пользователя ниже должны динамически создаваться другие DropDownList-ы. При этом в них пользователь тоже что-то может выбирать, и состояние также должно сохраняться. Поскольку чтение ViewState происходит после Init, то динамические контроллы в Init я создавать не могу, т.к. на тот момент неизвестно, что выбрал юзер в статическом DropDownList. С другой стороны, в Load я могу создавать все эти контроллы, но к тому моменту чтение ViewState я яже пропускаю, и что именно выбрал юзер в динамических - остается неизвестным :( Наверное можно на какое-то событие формы или контроллов повесить передачу SelectedValue в переменную сессии, но на какое? Как правильно решить проблему? Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 12:31 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
know-how как эта проблема решается. 1) На форме создаётся невидимый placeholder. 2) В OnInitialize создаются динамические dropdownlist'ы с ID, который был у них до отправки на сервер. Заетм помещаются в placeholder. Пример: Код: plaintext 1. 2. 3. 3) В OnLoad нужно сохранять выбранные значения в hashtable, например. Код: plaintext 1. 2. 3. 4. Ну и там же воссоздавать эти контролы со значениями: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Только осталось отличать моменты где сохранять значения, а где генерировать контролы и получать значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 13:22 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
авторНаверное можно на какое-то событие формы или контроллов повесить передачу SelectedValue в переменную сессии, но на какое? Как правильно решить проблему? я бы делал так... не надо сохранять значение - сохраняй весь контрол целиком ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 14:21 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
А если контрол не 1, а 101? Не тяжело будет таскать в request контрол целиком, вместо значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 14:55 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
авторА если контрол не 1, а 101? Не тяжело будет таскать в request контрол целиком, вместо значения? не очень понятно куда его нужно таскать - сессия она на сервере и тоскать её никуда не надо... а если viewstate на 1000000 значений, а если у бабушки ... то она будет дедушкой ;) я же сказал - я бы делал так ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:07 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
Что то перечитал... Опять получился пост довольно резковатый ;) Извиняюсь за стиль! P.S. кстати, не тяжело будет серверу пересоздавать объекты по новой при каждом постбэке, а также держать в памяти hashtable со значениями ;) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:23 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
Просто в моём примере всё контролы в placeholder получают значение контролов до постбэка автоматически через request. Твой способ, думаю, прост и хорош для нескольких (1 - 10) контролов, но для большего числа, думаю, тяжеловат будет. К тому же при сохранении довольно проблематично, на мой взгляд, проверять все значения сессии (если заведомо неизвестно количество контролов). Но это тоже моё личное мнение, почему я бы не стал использовать приведённый тобой способ. ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:24 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
vladgrigP.S. кстати, не тяжело будет серверу пересоздавать объекты по новой при каждом постбэке, а также держать в памяти hashtable со значениями ;) ? А как насчёт масштабируемости твоего способа? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:30 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
Я вовсе не хочу сказать, что твой способ плох, я просто не думал над использованием сессий для данной задачи. Я просто боюсь, что если одновременно будут работать около 1000 пользователй и заполнять форму с в среднем 10 динамическими контролами, то web-серверу придётся не сладко. Более того представим, что юзер заполняет поочередно несколько подобных старниц с разными контролами и может возваращаться на предыдущние страницы, при этом каждый раз нужно изменения созранять в БД. Или я не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 16:35 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
ух ты, понаписали! :) Вечером проверю, спасибо за советы! Ну чесслово, мозг сломал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 17:58 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
ИМХО придёт profil и расставит точки над i... а, пока его нет: авторЯ просто боюсь, что если одновременно будут работать около 1000 пользователй и заполнять форму с в среднем 10 динамическими контролами, то web-серверу придётся не сладко. я тоже сижу и размышляю - какая разница между динамично созданным контролом и контролом, статично присутствующим на странице... разницы по нагрузке на сервер, пока не замечаю... я же не предлагаю статично расставить 100 контролов и в зависимости от ситуации показывать пользователю тот или иной ;) я предлагаю хранить необходимые (созданные контролы) в сессии... объясню почему я так думаю: то что предлагаешь ты, повторяет весь стандартный процесс создания контрола, а передача его значения через hashtable - примерно, тот же viewstate. Вот я и думаю - какой смысл задействовать свой механизм (неизвестно верно ли сформированный), если существуют механизмы отработанные производителем - MS ;) Так же давай задумаемся - если каждый последующий контрол заполняется запросом из БД - как такой вариант!? При моём раскладе - будет внесён контрол уже содержащий набор данных, а при твоём - будет очередной запрос к БД - как в таком случае с производительностью и нагрузкой на сервер?! авторБолее того представим, что юзер заполняет поочередно несколько подобных старниц с разными контролами и может возваращаться на предыдущние страницы, при этом каждый раз нужно изменения созранять в БД. вот вот... а так у нас уже существует определённый набор в сессии и наша задача просто подставить (вернуть) нужный контрол на своё место... и всё... а уж коль скоро нужны реальные изменения в БД - динамика так сказать ;) то и значения нужно просто добавлять к дропдаунам вот так MyDDL.Items.Add(new DDLItem), а не перезапрашивать БД на наличие новых значений... P.S. немного напутано написал, наверное - но идея ясна, надеюсь ;) P.P.S. to Dmitry Gurianov - вот два варианта (на выбор) - теперь сиди и думай... хе-хе... авторКак правильно решить проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 18:22 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
Без обид, я предпочту лишний запрос к БД хранению каждого из контролов в session. Объект session вообще не советую засорять подобным образом, а использовать для глобальных переменных или передачи параметров метода POST. HashTable и ViewState - да, полагаю примерно равноценны в плане нагрузки. И опять-таки - всё зависит от конкретной задачи. Думаю, задавшему этот вопрос человеку сейчас главное не оптимальный вариант, а чтобы оно просто заработало. Для простоты и большей понятности в этом случае вполне можно воспользоваться способом vladgrig'a. PS. Я просто выступаю за то, что между Session и ViewState есть немалая разница - и то и другие надо страмиться сделать меньше. На помощь приходят БД и кэширование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 19:06 |
|
||
|
Состояние контролов (viewstate и т.п.)
|
|||
|---|---|---|---|
|
#18+
to Axeleron приятно было поболтать... ;) P.S. появилась новая пища для размышлений... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2006, 19:42 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=33742281&tid=1392473]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
82ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 231ms |
| total: | 408ms |

| 0 / 0 |
