复合控件属性,允许编码器从选项中进行选择

时间:2010-03-16 16:09:55

标签: c# asp.net composite-controls

问题在于标题,但是当您使用像

这样的普通服务器控件时更清楚
<asp:textbox /> 
<CC1:CtrlArticleList SortBy="Title"  ID="compositeControlArticleList" runat="server" />

文本框的属性允许您从下拉列表中进行选择(例如visibility = ... true或false)。如何在复合控制中复制它?

自提问以来添加了代码:

有人建议使用枚举,但不知道如何设置:

enum SortBY { Date, Title };

        [Bindable(false), DefaultValue(""), Description("The sorting type of the DataPager")]
    public SortBY SortBySomething
    {
        get
        {
            SortBY getDate = SortBY.Date;
            if(getDate == (SortBY)ViewState["SortBy"])
            {
                return SortBY.Date;
            }
            else
            {
                return SortBY.Title;
            }
        }
        set 
        { 
            ViewState["SortBy"] = value; 
        }
    }

1 个答案:

答案 0 :(得分:0)

只需在复合控件中创建属性,就像下面MSDN中的示例一样。然后,您的公共财产将出现在intellisence中。如果他们没有;你可能需要先重建你的应用程序。

 public class Register : CompositeControl
{
    private Button submitButton;

    // The following properties are delegated to 
    // child controls.
    [
    Bindable(true),
    Category("Appearance"),
    DefaultValue(""),
    Description("The text to display on the button.")
    ]
    public string ButtonText
    {
        get
        {
            EnsureChildControls();
            return submitButton.Text;
        }
        set
        {
            EnsureChildControls();
            submitButton.Text = value;
        }
    }

在看到你的评论之后,我认为你所寻找的是(可能不是完美的,没有测试,但它的结束):

public enum SortType{Name,Date}    

public SortType SortBy 
{
    get{
           if(ViewState["SortBy"] != null){
              return (SortType)ViewState["SortBy"];}
           else{return SortType.Date;}
    }
    set{ViewState["SortBy"] = value;}
}