серверные элементы управления asp.net - PullRequest
0 голосов
/ 10 июня 2010

Хорошо, у меня есть пользовательский серверный элемент управления с некоторыми настройками автозаполнения, у меня так, как показано ниже, и он работает нормально.

    /// <summary>
    /// Auto complete settings
    /// </summary>
    [System.ComponentModel.DesignerSerializationVisibility    (System.ComponentModel.DesignerSerializationVisibility.Content),
    PersistenceMode(PersistenceMode.InnerProperty),
    Category("Data"), Description("Auto complete settings"), NotifyParentProperty(true)]
    public AutoCompleteLookupSettings AutoComplete { private set; get; }

У меня также есть коллекция ParameterCollection, которая действительно связана с настройками автозаполнения, в настоящее время эта коллекция находится в самом элементе управления следующим образом:

    /// <summary>
    /// Parameters for any data lookups
    /// </summary>
    [System.ComponentModel.DesignerSerializationVisibility(System.ComponentModel.DesignerSerializationVisibility.Content), PersistenceMode(PersistenceMode.InnerProperty)]
    public ParameterCollection Parameters { get; set; }

То, что я хотел бы сделать, это переместить коллекцию параметров внутри AutoCompleteSettings, поскольку это действительно относится к моему автозаполнению, я пробовал это, но безрезультатно.

Я хотел бы перейти от

<cc1:TextField ID="TextField1" runat='server'>
    <AutoComplete MethodName="GetTest" TextField="Item1" TypeName ="AppFrameWork.Utils" />
    <Parameters>
        <asp:ControlParameter ControlID="txtTest" PropertyName="Text" Name="test" />
    </Parameters>
</cc1:TextField>

К

<cc1:TextField ID="TextField1" runat='server'>
    <AutoComplete MethodName="GetTest" TextField="Item1" TypeName ="AppFrameWork.Utils" >
        <Parameters>
            <asp:ControlParameter ControlID="txtTest" PropertyName="Text" Name="test" />
        </Parameters>
    </AutoComplete>
</cc1:TextField>

Ответы [ 2 ]

1 голос
/ 10 июня 2010

Я думаю, вы ищете атрибут ParseChildren .

[ParseChildren(true, "Parameters")]

Если вы пометите свой класс этим атрибутом, он попытается проанализировать разметку как дочернюю коллекцию и назначить ее свойству под названием «Параметры». На странице, на которую я ссылаюсь, есть хороший пример.

Атрибут PersistenceMode, как упомянуто в другом ответе, фактически указывает, чтобы конструктор VS правильно отображал дочернее свойство при создании разметки. Я не верю, что это будет иметь эффект, который вы ищете.

0 голосов
/ 10 июня 2010

Чтобы сделать это, вам нужно сделать так, чтобы ParameterCollection был свойством объекта AutoComplete. Я не уверен на 100%, но для объявления объекта ParameterCollection может потребоваться

[PersistenceMode(PersistenceMode.InnerProperty)]

атрибут. Попробуй;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...