2010-06-10 93 views
0

好吧,我有,有一些自動完成設置的自定義服務器控件,我有這個如下,它工作正常。asp.net服務器控件

/// <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內,我已經試過,但無濟於事..

我想從

移動0
<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> 

回答

1

我想你要找的是ParseChildren屬性。

[ParseChildren(true, "Parameters")] 

如果標記與此屬性類,它會嘗試解析標記作爲一個孩子的收集,並將其分配給一個名爲「參數」的屬性。在我鏈接的頁面上有一個很好的例子。

在另一個答覆中提到的PersistenceMode屬性實際上是指示VS設計師生成標記時正確渲染子屬性。我不相信它會有你想要的效果。

+0

我都試過,但我想既然我AutocompleteSettings是一個普通的類,而不是它不解析特性的控制,每一個例子,我看到這個使用控制或三夏作爲子對象不是一個標準的類,我不真的想要這樣做,但... – 2010-06-11 14:11:39

0

爲了做到這一點,你需要做的ParameterCollection中是自動完成對象的屬性。我不是100%確定,但ParameterCollection對象聲明可能需要

[PersistenceMode(PersistenceMode.InnerProperty)] 

屬性。給它一個嘗試;)