Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / динамический вывод на странице ??? / 7 сообщений из 7, страница 1 из 1
07.11.2005, 13:29
    #33363976
Vladimir Skubriev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
не получив ответа на свое предидущее сообщение в форуме, я как и ожидал натолкнулся на проблему в двух концах:
Вообщем вопрос мой заключался в том, как сделать один справочник на всю базу данных. Иными словами его можно интерпретировать по другому : "Что нужно сделать, чтобы программа была написана в одном месте(будь то файл, представление, код, или юзер контрол - не знаю пока, в этом и заключается мой вопрос). Потратив все воскресенье на то чтобы докапаться до разгадки я наткнулся на очень мой взгляд большие ГРАБЛИ!
Вариант решения проблемы номер "1": Берем Создаем юзер контрол, убираем у него абстрактность, создаем конструктор для него куда передаем в зависимости от того какую страницу хотим получить некоторые параметры + ссылку на класс страницы, на которой его создаем.
И тут сталкиваюсь с тем, что не могу его нарисовать ни как, я так понял лазая в мсдн, что это можно как-то сделать через HtmlTextWriter, но ему в конструктор надо передать абстрактный класс, который нельзя создать(TextWriter), следовательно и нельзя нарисовать Контрол. Увидеть это всё можно если почитать про метод RenderControl

из мсдн-а:

public void RenderControl(
HtmlTextWriter writer // треб-ся экземпляр текст врайтера, который абстрактен в описании, поэтому хз - запутался уже совсем!!! (( :(( :(
);
ГДе ВЗЯТЬ ОБЪЕКТ ЭТОГО htmltextwriter'a?

HtmlTextWriter Constructor : -

public HtmlTextWriter(TextWriter);

public HtmlTextWriter(TextWriter, string);

из того что уже как бы создано при работе не нашел ни чего что можно передать конструктору(всмысле объекта TextWriter)

Добавить в коллекцию Контролоа страницы или например PlaceHolder'a могу, а нарисовать т.е. чтобы он отображался на экране НЕТ ! Как это сделать подскажите???

Или же еще один способ который тоже закончился не удачей:

Есть такой метод для динамической подгрузки контролов наз-ся LoadControl("[строка-название файла контрола, н-р mycontrol.ascx]");
так вот он то работает, но проблема в том, что ты н как не передашь контролу ни какой информации о том, как ему вывестись(ну предположем, максимум на что я способен был сообразить, это добавить какие нибудь условия в Page_Load - контрола, который хочу вывести на многих страницах)

Потом, конечно добавляешь его в коллекцию ну н-р панели или страницы- разницы нет, он ОТОБРАЖАЕТСЯ, НО ОН сам по себе статичен!Какой- был такой и отобразился!

Но самое интересное, что контрол может содаржать докучи объектов, причем разных типов, и поэтому, когда из VS IDE пытаешсь достучаться н-р к дочернему контролу (н-р HyperLink, Page.Controls[15]. - и тут только то, что есть у контролы как класса, а то, что есть и должно быть у HyperLink'a - тем и не пахнет) А потому, что я так понимаю каждый дочерний контрол из подгружаемого надо приводить к типу его на самом деле, чтобы получить все его унаследованные свойства от предка(HyperLink.NavigateUrl, DataGrid.Items etc)
Вообщем вот такая-то беда ! Я думаю, что у меня изначально наверное неправильный подход(сложно очень), но что самое обидной ни когда не ищу легких путей, хотя и надо ! Но во всем ест свои плюсы и минусы!
Идея ву том, чтобы каждая страницы сайта загружалась динамически !
Причем, например меню было написано в одном месте для удобства (н-р файле контрола или класса) и контент в зависимости от типа контента (справочник с датагридом, текст с картинками или что-то еще) тоже
Делим страницу на две области таблице обычной и слева меню, справа контент
...
Рейтинг: 0 / 0
07.11.2005, 13:38
    #33364004
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
Vladimir SkubrievГДе ВЗЯТЬ ОБЪЕКТ ЭТОГО htmltextwriter'a?
тебе надо лишь переопределить метод render, указав, что в него при вызове передается ссылка на htmltextwriter, и использовать его внутри метода по своему усмотрению...
потом, при формировании контрола, будет вызван этот рендер, куда будет передана ссылка, иными словами тебе его создавать не надо...
...
Рейтинг: 0 / 0
07.11.2005, 13:50
    #33364035
Vladimir Skubriev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
Ну и тонкости программного подхода тоесть если я переопределяю метод, который использует уже сущ-ий объект в базовом классе мне не надо его создавать он сам его передаст переопределенному методу ?

Хорошо, а если например, я захотел поменять у контрола например Label только поле Text и еще какие либо поля, но самого контрола всмысле описания его экземпляров, свойств методов не переопределял то можно ли вывести это контрол не переопределяя послностью метод ?

и как вообще поступить когда надо чтобы каждая страничка формировлась динамчески в зав-ти от передаваемых параметров ??????????????? как ээти параметры передать и от куда взять ?
...
Рейтинг: 0 / 0
07.11.2005, 13:58
    #33364065
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
Vladimir SkubrievХорошо, а если например, я захотел поменять у контрола например Label только поле Text и еще какие либо поля, но самого контрола всмысле описания его экземпляров, свойств методов не переопределял то можно ли вывести это контрол не переопределяя послностью метод ?
"расшифруй" =)
в двух словах: если хочешь изменить отображение контрола, переопределяй рендер (желательно у наследника от этого контрола), если хочешь изменить поведение - переопределяй нужные методы, либо опять же наследуйся и добавляй нужные...
Vladimir Skubrievи как вообще поступить когда надо чтобы каждая страничка формировлась динамчески в зав-ти от передаваемых параметров ???????????????
страница или контрол? если страница, то просто добавляй/убирай контролы по ситуации, если же контрол, то переопределяй рендер, и через него выводи что нужно, в зависимости от состояния твоего контрола...
Vladimir Skubrievкак ээти параметры передать и от куда взять ?
передать можно через контструктор или свойства (можно через методы), брать? ну это уж от твоей логики зависит...
...
Рейтинг: 0 / 0
07.11.2005, 15:53
    #33364433
Vladimir Skubriev
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
а почему когда создаешь в VS новый контрол он наследуется и перед ним стоит модификатор abstract - для чего это ?

а если я не меняю конртол ,меняю только значения его свойств, мне что тоже прийдеться полностью переписывать его вывод в хтмл?

всмысле если я буду подгружать его из класса который описан в другом файле не обязательно наз-ся он будет *.ascx а будет просто MyControl.cs а внем уже будет класс который наследуется от контрола
...
Рейтинг: 0 / 0
07.11.2005, 16:00
    #33364466
monstrU
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
тебе следует посмореть в сторону server компонент - именно в них можно как угодно управлять выводимыми тегами
...
Рейтинг: 0 / 0
07.11.2005, 16:20
    #33364579
Sam Andrews
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамический вывод на странице ???
Vladimir Skubrievа почему когда создаешь в VS новый контрол он наследуется и перед ним стоит модификатор abstract - для чего это ?
как ты его создаешь, в обычных условиях создания юзер-контрола там не должно быть абстракта...
Vladimir Skubrievа если я не меняю конртол ,меняю только значения его свойств, мне что тоже прийдеться полностью переписывать его вывод в хтмл?
если меняешь значения - нет, ты просто задаешь состояние контрола...

попробуй отыскать в инете книгу "Developing ASP.NET Server Controls and Components", тогда многое, если не все, станет ясно...
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / динамический вывод на странице ??? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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