Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Довольно не типичная проблема. Есть пользовательский элемент управления A. В нем реализован класс B с несколькими открытыми свойствами (property1, property2, ...) класс string. В самом пользовательском элементе есть открытое свойство класса типизированной коллекции элементов класса B. Так вот, нужно сделать так, чтобы можно было заполнять эти элементы коллекция в шаблоне страницы, причем одно свойство заполнялось из дочерних элементов: <%@ Register Src="A.ascx" TagPrefix="uc" TagName="A" %> ... <uc:A ID="ucA" runat="server"> <uc:B property1=”value” property2=”value” ...> <a href=”#”>link</a> <br /> Text </uc:B> <uc:B property1=”value2” property2=”value2” ...> <a href=”#”>link2</a> <br /> Text2 </uc:B> ... </uc:A> Подскажите как такое реализовать, дайте пожалуйста действующий пример так как всевозможных ссылок и статей перечитал, но помогло мало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 12:17 |
|
||
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Как результат моих копаний дошел до следующего: 1. Пометил класс пользовательского элемента управления атрибутом [ParseChildren(true, "Patterns")] где Patterns - открытое свойство типизированной коллекции элемнтов класса B. 2. Само свойство Patterns пометил аттрибутом [PersistenceMode(PersistenceMode.InnerDefaultProperty)] А вот дальше ничего не получается, к тому же нужно еще как-то указать что дочернии элементы складывать с отдельное свойство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 12:22 |
|
||
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Причем при любых комбинациях атрибутов или смены класса коллекции ошибка одна и таже: при компиляции проекта VS выдает Object reference not set to an instance of an object. Если добавть два элемента <uc:B то эта ошибка вадется два раза. Интересно становится, если заменить мою коллекцию на ListItemCollection. Ошибок вообще не возникает и все работает, значить проблема в реализации класса коллекции или класса элементов коллекции. Может кто-то знает как исправить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 15:54 |
|
||
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Вы правильно догадываетесь: 1. Коллекция должна реализовывать IList, например:[Editor(typeof(Design.MenuItemCollectionEditor), typeof(UITypeEditor))] public class MenuItemCollection : IList {} 2. Элемент, который входит в коллекцию нужно пометить атрибутами:[TypeConverter(typeof(ExpandableObjectConverter)), ParseChildren(true, "Text")] public class MenuItem : Control { } 3. Ну и сам контрол нужно пометить атрибутами: [DefaultProperty("MenuItems"), ParseChildren(true, "MenuItems")] public class MainMenu : WebControl { } -- Гайдар Магдануров E-Mail | Блог | Сайт Difficult I do now, impossible will take a while... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.09.2006, 21:48 |
|
||
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Спасибо. Но не получается, та же самая проблема. При компиляции VS выдает сообщение Object reference not set to an instance of an object. Сделал с чистого листа, проблема не исчезла. Код вот он: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.ComponentModel; using System.Drawing.Design; using System.Web.UI.Design; [DefaultProperty("Items"), ParseChildren(true, "Items")] public partial class CMS_Core_WebUserControl2 : System.Web.UI.UserControl { public TestItemCollection Items { get { return this._items; } } private TestItemCollection _items = new TestItemCollection(); } [TypeConverter(typeof(ExpandableObjectConverter)), ParseChildren(true, "Text1")] public sealed class TestItem : Control { public string Text1 { get { return this._text1; } set { this._text1 = value; } } private string _text1; public string Text2 { get { return this._text2; } set { this._text2 = value; } } private string _text2; public string Text3 { get { return this._text3; } set { this._text3 = value; } } private string _text3; } //[Editor(typeof(Design.MenuItemCollectionEditor), typeof(UITypeEditor))] public sealed class TestItemCollection : System.Collections.Generic.List<TestItem> { } Сам шаблон страницы: <%@ Register Src="WebUserControl2.ascx" TagPrefix="uc" TagName="Test" %> ... <uc:Test ID="ucTest" runat="server"> <uc:TestItem Text1="test1" Text2="test2" Text3="test3" /> </uc:Test> В чем проблемы не пойму. PS: Закоментировал атрибуты //[Editor(typeof(Design.MenuItemCollectionEditor), typeof(UITypeEditor))] так как не могу найти класс MenuItemCollectionEditor. В MSDN он описан в пространстве имен System.Web.UI.Design.WebControls но у меня в VS последнее это System.Web.UI.Design, а дальше есть только MobileControls (пространство имен System.Web.UI.Design.WebControls отсутсвует вообще) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 01:40 |
|
||
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Самое удивительное, что пример описанный в MSDN ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.NETDEVFX.v20.en/cpref13/html/T_System_Web_UI_ParseChildrenAttribute.htm выдает точно такуюже ошибку при компиляции. Начинаю подумывать об ошибке в Visual Studio, но почему тогда ListItemCollection отрабатывает нормально не могу понять. Вопрос очень актуален, так как вся эта затея имено для того чтобы задавать свойства пользовательского контрола через шаблоны в теэгах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 17:32 |
|
||
|
Свойства и подсвойства для пользовательских элементов управления
|
|||
|---|---|---|---|
|
#18+
Кароче, я перепробовал все методы какие можно и ни один из них не изменил результата. Никакие атрибуты не меняют положения дел, значить на 100% уверен что проблема в моей реализации коллекции, поскольку с колекцией ListItemCollection все работает. Так вот, суть моей просьбы, многие и вас имеют доступ к исходным файлам фрэймворка, подскажите какими атрибутами и как описаны классы ListItemCollection и ListItem. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2006, 18:49 |
|
||
|
|

start [/forum/topic.php?fid=18&fpage=873&tid=1389352]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 394ms |

| 0 / 0 |
