|
|
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Добрый день! Про динамические контролы прочитал в форуме много и в принципе понял, как они должны работать. Но моя задача поставлена так, что я не знаю, как заставить их работать. Итак, что нужно: 1. на странице есть кнопка, которая по OnClick генерит GridView (заранее неизвесно количество и тип столбцов) 2. в GridView может попасть колонка, в которой необходимо поместить LinkButton. На этот LinkButton по OnClick будет вызываться некое событие. 3. все это должно работать без видимой перезагрузки с использованием UpdatePanel. В чем проблема: Событие динамического контрола должно формироваться не позднее Page_Load. Но в моей задаче на этапе Page_Load еще не известно, что будет в GridView. Это будет известно, когда сработает событие OnClick кнопки. Вопрос. Можно ли и как реализовать данный механизм? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 11:21:21 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Orion70Добрый день! Вопрос. Можно ли и как реализовать данный механизм? JavaScript ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 11:26:51 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
OracleLoverOrion70Добрый день! Вопрос. Можно ли и как реализовать данный механизм? JavaScript Не усложняйте. Достаточно про жизненный цикл почитать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 11:29:37 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
OracleLover, javaScript не подойдет, мне нудна серверная обработка события ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 11:32:04 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
ShSerge, Про жизненный цикл страницы читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 11:33:15 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Событие динамического контрола должно формироваться не позднее Page_Load - эм под динамическим контролом имеется ввиду LinkButton и я так понимаю биндиш по клику. DataBinging grid колонки или строки не помню - разве не катит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 12:51:30 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
brainproofСобытие динамического контрола должно формироваться не позднее Page_Load - эм под динамическим контролом имеется ввиду LinkButton и я так понимаю биндиш по клику. DataBinging grid колонки или строки не помню - разве не катит? Да, динамический контрол это LinkButton. DataBinding строки происходит, когда вызывается DataBind Grid-a, а DataBind Grid-a осуществляется из метода OnClick кнопки. Если бы оно осуществлялось из Page_load, то думаю проблем небыло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 13:03:14 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
а что мешает это сделать? на форме явно лежит грид. по клику вызовется grid.dataBind() и тут уже событие перейдет в гридовский метод где можно делать по моему что угодно ..закинуть LinkButton в колонку и привязать ему событие. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 14:22:21 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
brainproofа что мешает это сделать? на форме явно лежит грид. по клику вызовется grid.dataBind() и тут уже событие перейдет в гридовский метод где можно делать по моему что угодно ..закинуть LinkButton в колонку и привязать ему событие. Так работать не будет. Закинуть LinkButton можно, а вот событие можно привязать не позже Page_Load, иначе оно работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 14:40:54 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Orion70, тоже небольшие предложения 1. gridview разместите внутри страницы сразу -просто коллекцию колонок сделайте пустой. будет проще 2. может переделать логику старницы - чтобы по кнопке страница редиректилась на новую страницу, где и будет жтот самы грид ? будет проще 3. после генерации грида после нажатия кнопки надо запомнить, что грид заполнялся, и при Page_init смотреть - если было такое заполнение, то нужно снова биндить грид - он у вас динамический 4. первый вариант сделайте без updatepanel - тоже будет задача 5. и подумайте, нужна ли вам Updatepanel - она всю форму отправляет на сервер при асинхронном обновлении страницы - в итоге все будет работать долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 15:05:56 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
monstrUOrion70, тоже небольшие предложения 1. gridview разместите внутри страницы сразу -просто коллекцию колонок сделайте пустой. будет проще 2. может переделать логику старницы - чтобы по кнопке страница редиректилась на новую страницу, где и будет жтот самы грид ? будет проще 3. после генерации грида после нажатия кнопки надо запомнить, что грид заполнялся, и при Page_init смотреть - если было такое заполнение, то нужно снова биндить грид - он у вас динамический 4. первый вариант сделайте без updatepanel - тоже будет задача 5. и подумайте, нужна ли вам Updatepanel - она всю форму отправляет на сервер при асинхронном обновлении страницы - в итоге все будет работать долго 1. - я так и сделал 2. - можно, но вся задумка, чтобы страница не редиректилась. С редиректом сейчас все хорошо работает. 3. - 2 раза биндить грид? как вариант, но не хотелось бы. 5. - можно поподробнее. Мне как раз нужно, чтобы данные ходили меньше и чтобы редиректов небыло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 15:50:13 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Нашел один вариант, не знаю насчет кривизны и есть одно но: 1. На страницу помещаем невидимый Button 2. На все LinkButton-ы Grid-a вешаем клиентский JavaScript: ...Attributes.Add("onclick"... 3. На невидимый Button вешаем серверное событие. 4. В javaScript пишем ClientScript.GetPostBackEventReference для нашей невидимой кнопки. В этом варианте все события ловятся на сервере. И теперь самое неприятное: GetPostBackEventReference перегружает страницу, не обращая внимания на UpdatePanel и AsyncPostBackTrigger :( Никто не знает как это побороть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 15:56:33 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Orion70 ой я понял..я вспомнил..я такое примерно делал. Модель состояний и жизненный цикл меня обрезали. Вам что к примеру надо сделать? просто можно сгенерировать ссылку на ashx и передать туда параметры и обработать там? а по ответу хендлера потом можно будет обновить страницу и без всякого UpdatePanel и все на ajax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 16:03:21 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Orion70, пункт 3 обязателен, так как у вас контрол динамически формируется - иначе обработчики не прицепятся. причем надо разделять - у вас постебек идет от кнопки или от нажатой ссылки про 5 пункт updatepanel всю форму отправляет на сервер. и только потом идет ответ от тех элементов, которые обновляются по ajax. самое лучшее решение - серверную ссылку заменить на клиентскую и метод на сервере вызывать посредством хандлера ashx и Jquery - наименее ресурсоемкий вариант. если сделакет клиентскую ссылку, то пункт 3 отомрет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 16:31:39 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
понял, спасибо, буду копать в сторону ashx. Но всетаки интересно, можно ли сделать так, чтобы GetPostBackEventReference не перегружал всю страницу, чтобы обновлять только UpdatePanel? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 16:45:37 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
хех советы совпали с monstrU да если сможеш на Page_Init проинициализировать грид на основе данных при нажатия кнопки( там в сессии или еще где). тебе вообщем надо по сути воссоздать контролы в гриде,которые были после нажатия кнопки , на Init дальше вьюстейт сделает свое дело и экшен сработает. Но имхо медленно. ashx и Jquery прозрачнее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 16:57:41 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
Orion70понял, спасибо, буду копать в сторону ashx. Но всетаки интересно, можно ли сделать так, чтобы GetPostBackEventReference не перегружал всю страницу, чтобы обновлять только UpdatePanel? брось ты этот вопрос. делай на jquery и ashx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 18:06:08 |
|
||
|
Динамические контролы.
|
|||
|---|---|---|---|
|
#18+
monstrUбрось ты этот вопрос. делай на jquery и ashx Я все-таки нашел причину :) Если кому интересно: Чтобы обновлялся только UpdatePanel GetPostBackEventReference нужно вызывать на кнопке, у которой Visible="true". При Visible="false" по любому идет обновление всей страницы. Скрыть кнопку можно через стиль: style="visibility:hidden". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.12.2011, 19:26:33 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=37577915&tid=1360174]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
169ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 188ms |
| total: | 416ms |

| 0 / 0 |
