0

オートコンプリート設定のあるカスタムサーバーコントロールがあります。これは次のようになり、正常に機能します。

    /// <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>
4

2 に答える 2

1

あなたが探しているのはParseChildren属性だと思います。

[ParseChildren(true, "Parameters")]

クラスにこの属性のタグを付けると、マークアップを子コレクションとして解析し、「Parameters」というプロパティに割り当てようとします。リンクしたページに良い例があります。

別の回答で言及されている PersistenceMode 属性は、実際には、マークアップを生成するときに子プロパティを適切にレンダリングするように VS デザイナーに指示することです。あなたが探している効果があるとは思えません。

于 2010-06-10T16:38:14.157 に答える
0

これを行うには、ParameterCollection を AutoComplete オブジェクトのプロパティにする必要があります。100% 確実ではありませんが、ParameterCollection オブジェクトの宣言には、

[PersistenceMode(PersistenceMode.InnerProperty)]

属性。試してみる ;)

于 2010-06-10T15:32:08.340 に答える