2013-03-29 57 views
0

我正在尋找設置將有2個公共字符串屬性的用戶控件。 此字符串應該是具有用戶控件的頁面控件的ID。asp.net自定義控件屬性作爲另一個控件的引用

使用控制驗證類作爲一個例子,一個標籤我一直沒能相關的控制ID來

  1. 擁有的財產顯示爲下拉用的控制頁面上的名單後,在將該控件添加到另一個頁面時的屬性面板中。 (這是驗證工作的一種控制方式,試圖找出我失蹤的方式)。
  2. 我能夠獲得所有的列表,我希望將其中的一些限制爲特定控件類型(drop下拉列表或其他)。根據我已經完成的一些額外的閱讀,我猜這將需要與自定義type converter完成。

    [ 
        Category("Behavior"), 
        DefaultValue(""), 
        Description("The State Tex Box"), 
        TypeConverterAttribute(typeof(AssociatedControlConverter)) 
    ] 
    public string StateControlToAutoFill 
    { 
        get 
        { 
         object o = ViewState["StateControlToAutoFill"]; 
         return ((o == null) ? String.Empty : (string)o); 
        } 
        set 
        { 
         ViewState["StateControlToAutoFill"] = value; 
        } 
    } 
    

回答

0

爲起點使用驗證控件(即該控件來驗證道具呢,我想大部分什麼)我能解決這個問題做如下。

  1. 帶着我自己的邏輯來看看ValidateControlConverter.cs
  2. 創建了自己的LabelOrTextBoxTypeConverter覆蓋同樣的方法,ValidateControlConverter(FilterControl)。

    class LabelOrTextBoxTypeConverter : ControlIDConverter 
    { 
    //public ControlByTypeIDConverter(List<Type> WantedControlTypes) 
    //{ 
    // this.ControlTypes = WantedControlTypes; 
    //} 
    /// <summary> 
    /// 
    /// </summary> 
    /// <param name="control"></param> 
    /// <returns></returns> 
    protected override bool FilterControl(Control control) 
    { 
        bool isWanted = false; 
        foreach (var atype in this.ControlTypes) 
        { 
         isWanted |= control.GetType() == atype; 
        } 
    
        return isWanted; 
    } 
    
    
    public List<Type> ControlTypes { get { return new List<Type>() { typeof(TextBox), typeof(Label) }; } } 
    

    }

  3. 最後一步是在控件屬性

    [ 
    Category("Target Controls") 
    , DefaultValue("") 
    , Bindable(true) 
    , Description("The State Text Box To Auto Fill.") 
    , TypeConverterAttribute(typeof(LabelOrTextBoxTypeConverter)) 
    ] 
    public string StateControlToAutoFill 
    

,你可以看到我沒有得到100%的什麼我想在這裏。 我希望能夠設置這只是一個控制過濾器類,並有一個我感興趣的控制類型的列表通過。我需要做更多的挖掘來完成這一點,但暫時這是按預期工作。任何知道如何解決這個問題的人都會非常感激。

所有說和做這個工作。由於您必須處於設計模式才能使用prop面板來利用生成的列表,因此無法真正使用它。

相關問題