powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Динамическое создание System.Web.UI.UserControl
1 сообщений из 1, страница 1 из 1
Динамическое создание System.Web.UI.UserControl
    #38145010
Yuriy_Rus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем попробывал поработать с
Код: c#
1.
2.
3.
4.
public Control LoadControl(
Type t,
Object[] parameters
)



Для дин. создания своих контролов.
Есть у меня след. иерархия классов:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public interface IVisualObjectView
{
 
}
 
public partial class VisualObjectView_Web : System.Web.UI.UserControl, IVisualObjectView
{
private void Page_Load(object sender, EventArgs e)
{
}
}
 
public interface IDataSourceView : IVisualObjectView
{
}
 
public partial class DataSourceView_Web : VisualObjectView_Web, IDataSourceView
{
}
 



"В классе" DataSourceView_Web есть aspx-файл, в кот. реализована разметка, как раз его мне и надо отобразить на панели.

"Отображение" пытаюсь делать так:
Код: c#
1.
2.
3.
4.
5.
6.
public void SetVisualObjectView(IVisualObjectView objectView)
{
System.Web.UI.Control myControl = Page.LoadControl(objectView.GetType(), null);
PanelMain.Controls.Add(myControl);
}
 



Почему именно так - чтобы в проект не включать кучу сборок требуемых к отображению объектов. В этой функции это просто объект родительского класса IVisualObjectView. Некоторые из требуемых сборок могут быть заранее и неизвестны - такая специфика проекта.

Такой код работает, но всё что я накидал в разметке, а VS подтянула в файл дизайнера класса DataSourceView_Web - не отображается. В этом суть проблемы.
Будут отображаться элементы, созданные и описанные в классе DataSourceView_Web, например, след. образом:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private Label _lbl = new Label();
private Button _btn = new Button();
 
protected override void CreateChildControls()
{
base.CreateChildControls();
 
_btn.Width = 300;
_btn.Click += btn_Click;
_btn.Text = "Test Button";
 
Controls.Add(_btn);
 
_lbl.Width = 300;
_lbl.Text = "Test Label";
 
Controls.Add(_lbl);
}
 



Работать с разметкой при реализации отображения подобных объектов по мне в разы проще, чем создавать их руками и реализовывать размещение и стили в коде C#.

Вопрос: чтобы Page.LoadControl работал как мне требуется надо обязательно указывать конечный класс с разметкой, а не родительский класс? Или может проблема в другом?

Заранее спасибо всем, кто участвует в обсуждении.
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Динамическое создание System.Web.UI.UserControl
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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