Программно используя UserControls

2

У меня есть проект, в котором я создал пару пользовательских элементов управления: Легенда и Легенда.

На моей веб-странице я получаю сбор информации, которую хочу загрузить в элементы управления LegendItem (настройка основного текста и информации о цвете). Затем добавьте эти элементы в элемент управления Legend (элемент управления Legend имеет панель на ней и Я ссылался на пользовательский контроль Legend на самой веб-странице.

Мне трудно понять, как правильно получить дескриптор элемента управления LegendItem, чтобы я мог получить доступ к его свойствам и установить их.

Я могу предоставить код, если вам это нужно, но я застрял и нуждаюсь в некоторой помощи! Спасибо, что нашли время, чтобы прочитать это!

Теги:
dynamic
user-controls

4 ответа

0
Лучший ответ

Я не уверен, что вы пытаетесь сделать. Если вам нужно добавить свой контроль (статически) на свою страницу, вот как вы это делаете:

<% @Страница Язык = "С#" % >
   <% @Register TagPrefix = "uc" TagName = "Spinner" src= "~\Controls\Spinner.ascx" % >
   <HTML>
   < тело >
   < form runat = "server" >
       < uc: Spinner id = "Spinner1"            Runat = "сервер"            MinValue = "1"            MaxValue = "10" /" >
   </формa >
   </тело >

Как только у вас есть это, в коде позади вы можете найти элемент управления по идентификатору, применить его к своему типу и затем сделать что угодно. BTW, MinValue и MaxValue - это свойства, определенные в вашей реализации управления.

Теперь, если вы хотите динамически создавать экземпляр элемента управления "на лету", вам необходимо использовать метод LoadControl на своей странице. Этот метод возвращает экземпляр вашего элемента управления, но чтобы что-то сделать с ним, вам нужно добавить его в контрольную коллекцию страницы, например:

page.Controls.Add(mycontrol).

Вы можете сделать это в любом месте жизненного цикла страницы перед событием OnRender. Просто имейте в виду, что как только вы это сделаете, элемент управления начнет играть догоняющий - он будет пропущен через все события жизненного цикла страницы, которые он пропустил. Также имейте в виду, что если страница отправлена ​​назад, вам необходимо убедиться, что элемент управления установлен точно так же, как и к тому времени, когда обрабатывается viewstate.

В качестве побочного примечания я думаю, что выполнение такого рода рабочих серверов немного устарело. Вам будет лучше делать что-то с JQuery и любимыми

1

Вы можете просто ввести пользовательский элемент управления с помощью LoadControl.

Затем установите свои свойства.

Затем добавьте элемент управления в элемент управления закладок asp.net, который у вас есть в элементе управления Legend.


LegendItem li = (LegendItem)LoadControl("LegendItem.aspx");
li.name = "bob"
legend.placeholder.controls.add(li);
  • 0
    Это не работает для меня - я попробовал это. Мое веб-приложение не распознает LegendItem как объект. Получение сообщения об ошибке «тип или имя пространства имен« LegendItem »cound not found». У меня есть ссылка на элемент управления на моей веб-странице. Не уверен, что еще можно попробовать.
  • 0
    @Cen - Без просмотра вашего проекта и вашего кода я действительно не могу предложить гораздо больше советов. Вы говорите, что у вас есть ссылка на элемент управления на вашей веб-странице? Что ты имеешь в виду? Если это все в одном проекте, вам не нужна ссылка.
Показать ещё 3 комментария
1

Ключом к пониманию динамических элементов управления является понимание жизненного цикла страницы. Вы должны убедиться, что ваши элементы управления создаются во время события page_init, чтобы гарантировать правильную обработку элемента управления на стороне сервера.

Отличный элемент управления, который доступен для управления динамически создаваемыми элементами управления, - это динамический элемент управления.

  • 0
    Я думаю, что мне нужно уточнить. Я понимаю жизненный цикл страницы - этот вопрос не об этом. Я хочу иметь возможность создавать LegendItem в коде, так же, как я могу создавать TextBox, DropDownList и т. Д., Устанавливать его свойства и добавлять его в пользовательский элемент управления Legend. Я могу сделать это, создав собственную библиотеку классов и создав пользовательский элемент управления, а затем ссылаясь на эту DLL, но я не хочу проходить через все это, если это возможно. Спасибо за ваш ответ, lomaxx.
0

Это так странно. Моя страница aspx.cs не распознает мой элемент управления, если я не дал пользователю управление пространством имен. Теперь я могу создавать объекты, накладывать их правильно и т.д.

Спасибо всем за попытку.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню