用户控制与其他控件作为属性

时间:2012-01-18 15:28:35

标签: c# asp.net .net vb.net

在我的asp.net 4.0应用程序中,我在整个应用程序中有一组标准控件,它们有一个用于搜索的选项卡,一个用于View,一个用于Reporting。我正在更新这些选项卡,我希望能够将其功能包装到单个用户控件中,因为它们都以非常相似的方式运行。我遇到的问题是如何创建一个名为SeacrhTab / ViewTab / ReportTab的属性,它允许我根据应用程序的区域(例如,CompanySearchControl,ContactSearchControl等)为其分配不同的用户控件。任何人都试图完成某事类似?我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

为特定的布局,视图或标签定义创建一个枚举,即:SearchTab,ViewTab等指定作为UserControl的属性,然后使用该属性创建,或隐藏和显示特定的PlaceHolder或Panel,具体取决于所需的布局或功能。

public enum ControlLayoutEnum
{
    SearchTab = 0,
    ViewTab = 1,
    ReportTab = 2
}

public class TabViewControl: System.Web.UI.UserControl
{
    public ControlLayoutEnum ControlLayout { get; set; }

    protected override OnInit(object sender)
    {
        // Create controls required or Hide/Show PlaceHolder or Panel etc
        switch (this.ControlLayout)
        {
            case ControlLayoutEnum.SearchTab: // Create Search Layout
                break;
    }


}

答案 1 :(得分:0)

您应该只能在代码隐藏页面的部分类定义中创建常规属性。将其公开以及包含所有选项卡控件的泛型类的类型,您应该进行设置。

我没有制作用户控件的其他控件属性,但我确实使用了所有其他自定义类作为用户控件的属性,因此我不明白为什么它不起作用。

假设CompanySearchControlContactSearchControl都从GenericSearchTabControlClass继承,例如:

public GenericSearchTabControlClass SearchTab {get;set;}
public GenericViewTabControlClass ViewTab {get;set;}
public GenericReportTabControlClass ReportTab {get;set;}