как получить Render output от контрола?
От: boriq Россия  
Дата: 25.10.06 07:03
Оценка:
Есть у меня сервер-контрол. Как можно получить html, в котороый он рендерится?
Конечно на первый взгляд можно использовать

conrol.Render(myWriter);


Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...

Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке.
Как в таком случае поступают?
Re: как получить Render output от контрола?
От: Gollum Россия  
Дата: 25.10.06 08:34
Оценка:
Здравствуйте, boriq, Вы писали:

B>Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...


Поместите его на форму, отрендерьте
Автор: Gollum
Дата: 29.07.04
, и уберите обратно.

B>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке.

B>Как в таком случае поступают?

А так не поступают, явно не самый удачный дизайн. Зачем это понадобилось?
Любая весть изначально благая, просто ты к этому еще не привык
Eugene Agafonov on the .NET

Re: как получить Render output от контрола?
От: i-ka Россия  
Дата: 25.10.06 08:36
Оценка:
Здравствуйте, boriq, Вы писали:

B>Есть у меня сервер-контрол. Как можно получить html, в котороый он рендерится?

B>Конечно на первый взгляд можно использовать

B>
B>conrol.Render(myWriter);
B>


B>Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...


B>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке.

B>Как в таком случае поступают?

Добавляют его в форму перед рендерингом. Еще надо убедиться, что все его паренты и он сам видимы (Visible = True).
Re[2]: как получить Render output от контрола?
От: boriq Россия  
Дата: 25.10.06 09:00
Оценка:
Здравствуйте, Gollum, Вы писали:

B>>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке.

B>>Как в таком случае поступают?

G>А так не поступают, явно не самый удачный дизайн. Зачем это понадобилось?


А каков удачный дезайн? Если мне нужно GridView обновлять без перезагрузки страницы?
Я хочу делать xhttprequest на страницу, а она бы мне возвращала отрендеренный грид. Я б его подставлял в div и всё.
Или строить грид javascript'ом на основе возвращаемого xml — это самый удачный дезайн?
Re[3]: как получить Render output от контрола?
От: Gollum Россия  
Дата: 25.10.06 09:18
Оценка:
Здравствуйте, boriq, Вы писали:

B>А каков удачный дезайн? Если мне нужно GridView обновлять без перезагрузки страницы?


Ну лучше-то конечно сделать что-то типа UpdatePanel и PartialRendering из атласа. Но в общем, и так сойдет.
По всей Смоленщине нет кокаина — это временный кризис сырья
Eugene Agafonov on the .NET

Re: как получить Render output от контрола?
От: gaech Россия http://blogs.gotdotnet.ru/personal/gaech/
Дата: 25.10.06 09:33
Оценка:
Здравствуйте, boriq, Вы писали:

B>Есть у меня сервер-контрол. Как можно получить html, в котороый он рендерится?

B>Конечно на первый взгляд можно использовать

B>
B>conrol.Render(myWriter);
B>


B>Но на второй взгляд, этот метод выбрасывает эксепшн о том, что "твой контрол должен быть внутри формы с атрибутом runat="server""...


B>Вообще всё это нужно для того, чтобы по коллбэку получить рендер только этого контрола и подставить его в нужный div на страничке.

B>Как в таком случае поступают?

Мне уже приходилось такое раньше делать.
Надо так

Control cntr = new TextBox();
HtmlTextWriter writer = new HtmlTextWriter(new StringWriter());
cntr.RenderControl(writer);
myDIV.InnerHtml = writer.InnerWriter.ToString();


Удачи!
Блог | Email | Калининградское сообщество .NET разработчиков
Re[2]: как получить Render output от контрола?
От: boriq Россия  
Дата: 25.10.06 10:02
Оценка:
Здравствуйте, gaech, Вы писали:

G>Мне уже приходилось такое раньше делать.

G>Надо так

G>
G>Control cntr = new TextBox();
G>HtmlTextWriter writer = new HtmlTextWriter(new StringWriter());
G>cntr.RenderControl(writer);
G>myDIV.InnerHtml = writer.InnerWriter.ToString();
G>


G>Удачи!


может с TextBox'ом это прокатит, но gridView.RenderControl(writer); выбрасывает эксепшн...
Re: как получить Render output от контрола?
От: Аноним  
Дата: 25.10.06 10:45
Оценка: -1
GollumА так не поступают, явно не самый удачный дизайн.
Нормальный дизайн.

А чтобы не ругалось насчет того, что контрол должен быть вставлен в форму, то:
1. Рендерить контрол
2. Вместо TextBox использовать <input type=text> и т.д.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[3]: как получить Render output от контрола?
От: Andre Украина  
Дата: 25.10.06 10:46
Оценка:
Здравствуйте, boriq, Вы писали:

B>А каков удачный дезайн? Если мне нужно GridView обновлять без перезагрузки страницы?

B>Я хочу делать xhttprequest на страницу, а она бы мне возвращала отрендеренный грид. Я б его подставлял в div и всё.
B>Или строить грид javascript'ом на основе возвращаемого xml — это самый удачный дезайн?

Может тебе это подойдет: Tip/Trick: Cool UI Templating Technique to use with ASP.NET AJAX for non-UpdatePanel scenarios
... << RSDN@Home 1.2.0 alpha rev. 655 :: silent >>
Я бы изменил мир — но Бог не даёт исходников...
Re: как получить Render output от контрола?
От: CyberRussia  
Дата: 25.10.06 14:55
Оценка:
Исходников нет под рукой, но я делал как-то так:
Page p = new Page();
Render ren = new Render();
...
p.Controls.Add(ren);
ren.Render(myWriter);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.