Создание анкеты, нужен совет..

Дмитрий_N
Дата: 19.04.2010 14:39:42
Спасибо за ответы!

На javascript точно не смогу такое написать.. Repeater, тут тоже не подойдет. Хотя и опыта создания custom-control тоже нет. По крайней мере, если делать на сервере, то есть шанс разобраться.
Буду благодарен, если выложите ссылки на описание custom-control. Может есть, где попроще объяснено.
Zoria
Дата: 19.04.2010 16:25:30
Дмитрий_N,

почему-то лчино мне кажется, вам кастомконтролами рановато заниматься.

Задача не "вынь да положь", поэтому если хотите помощи - конкретно опишите чего хотите достичь :)
Max Pro
Дата: 19.04.2010 16:38:49
Дмитрий_N
Спасибо за ответы!

На javascript точно не смогу такое написать.. Repeater, тут тоже не подойдет. Хотя и опыта создания custom-control тоже нет. По крайней мере, если делать на сервере, то есть шанс разобраться.
Буду благодарен, если выложите ссылки на описание custom-control. Может есть, где попроще объяснено.

Хотел найти ссылки на старый хэйп 1.1 фраймеворка, так как там очень хорошо и просто всё, да наверно Микрософт убрал их, не смог найти.
Но смог найти для 3.5 фраймеворка. Там всё сложнее, но всё же кое что.
Полностью весь раздел:
http://msdn.microsoft.com/ru-ru/library/zt27tfhy(v=VS.90).aspx
Отдельный пример:
http://msdn.microsoft.com/ru-ru/library/3257x3ea(v=VS.90).aspx
Пример этот очень хорош и нагляден, так как в нём есть главное: добавление динамически внутренних элементов управления (CreateChildControls), отрисовка (Render) и события (EventHandler).
Обычно кастом-контролс пишутся по нескольку дней ввиду повышенной сложности, срок изготовления зависит от опыта и квалификации, даже больше от опыта, я бы сказал.
В твоём случае, в силу отсутствия опыта в custom-контролах, можно попытаться сделать как ты упомянул в самом начале:
"сделать на каждый информационный блок свой usercontrol ascx". И потом их динамически добавлять на страницу aspx.
Но этот путь пожалуй проще только свиду (будет гимор с восстановлением дерева контролов и с событиями). Я рекомендую для динамики только custom.
Дмитрий_N
Дата: 20.04.2010 14:13:14
Zoria
почему-то лчино мне кажется, вам кастомконтролами рановато заниматься.

Да, возможно, вы правы, но все же решил попробовать.. Отдельное спасибо за предложение помощи!

Max Pro, спасибо за ссылки!
Вчера и сегодня разбирал этот пример:
http://msdn.microsoft.com/ru-ru/library/3257x3ea(v=VS.90).aspx
Подключил его к сайту, посмотрел как работает:)

Появился вопрос. Например. Есть 1-ый блок, состоящий из 3 Label и 3 Textbox и 2 CheckBox и есть 2-ой блок, состоящий из 6 Label, 6 Textbox и 2 DropdownList. Насколько я понял, контролы создаются в
Protected Overrides Sub CreateChildControls()
. Создали. Отрисовываются в
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
. Но не понятно, как по нажатию кнопки добавить вниз страницы 1 блок, а за ним по нажатию другой кнопки, 2 блок?
Max Pro
Дата: 20.04.2010 15:56:36
Дмитрий_N
...
Вчера и сегодня разбирал этот пример:
http://msdn.microsoft.com/ru-ru/library/3257x3ea(v=VS.90).aspx
Подключил его к сайту, посмотрел как работает:)

Появился вопрос. Например. Есть 1-ый блок, состоящий из 3 Label и 3 Textbox и 2 CheckBox и есть 2-ой блок, состоящий из 6 Label, 6 Textbox и 2 DropdownList. Насколько я понял, контролы создаются в
Protected Overrides Sub CreateChildControls()
. Создали. Отрисовываются в
Protected Overrides Sub Render(ByVal writer As HtmlTextWriter)
. Но не понятно, как по нажатию кнопки добавить вниз страницы 1 блок, а за ним по нажатию другой кнопки, 2 блок?

Во-первых могу похвалить, молодец. Путь трудный ты выбрал, но правильный.
Во-вторых сообщаю по существу.
Тебе надо задействовать некий кэш для сохранения состояния, называется вивстэйт.
public sub new()
 Vievstate("iCountBlock1")=0 
 Vievstate("iCountBlock2")=0
end sub
public property iCountBlock1() as integer
 get
  return ctype(Vievstate("iCountBlock1"),integer)
 end get
 set(byval value as integer)
  Vievstate("iCountBlock1")=value
 end set
end property
public property iCountBlock2() as integer
 get
  return ctype(Vievstate("iCountBlock2"),integer)
 end get
 set(byval value as integer)
  Vievstate("iCountBlock2")=value
 end set
end property
И потом по нажатию кнопки добавления блока - добавлять число блоков, по нажатию кнопки удаления блока - производить уменьшение (свойства iCountBlock1,iCountBlock2 и так далее).
Раньше в 1-м фраймеворке надо было применять интерфейс IPostBackEventHandler, но судя по примеру 3.5 фраемеворка, там упростили всё. При выстраивании дерева контролов (CreateChildControls) ты должен добавить нужное число блоков.
Вместо IPostBackEventHandler можно применить ICallBackEventHandler для частичного обратного запроса.