Is there a way to put inner controls inside a ASP.NET Custom Control?

前端 未结 3 577
猫巷女王i
猫巷女王i 2020-12-31 14:19

I want to do something like (Updated example):


  
    
    

        
3条回答
  •  清歌不尽
    2020-12-31 15:01

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Collections;
    using System.Web.UI.HtmlControls;
    
    namespace Gui.Controls
    {
    
        [DefaultProperty("Text")]
        [ToolboxData("<{0}:GPMenu runat=server>")]
        [ParseChildren(false)]
        public class GPMenu : WebControl
        {
    
            private void CreateDynamicControls()
            {
                //some code for Creating Dynamic Controls 
    
    
            } //eof method 
    
            #region FieldsAndProps
    
            #region ActiveTab
    
            protected int _ActiveTab;
            [Bindable(true)]
            [Category("Appearance")]
            public int ActiveTab // Public properties   
            {
                get { return _ActiveTab; }
                set { _ActiveTab = value; }
            }
            #endregion ActiveTab
    
            #region Caption
    
            protected string _Caption = "";
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string Caption // Public properties  
            {
                get { return _Caption; }
                set { _Caption = value; }
            }
            #endregion Caption
    
            #region MenuId
    
            protected string _MenuId = "0";
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string MenuId // Public properties   
            {
                get { return _MenuId; }
                set { _MenuId = value; }
            }
            #endregion MenuId
    
            #region Text
    
            protected string _Text = "";
            [Bindable(true)]
            [Category("Appearance")]
            [DefaultValue("")]
            [Localizable(true)]
            public string Text // Public properties 
            {
                get { return _Text; }
                set { _Text = value; }
            }
            #endregion Text
    
            #region UserObj
    
            private FB.User userObj;
            public FB.User UserObj
            {
                get
                {
                    return userObj;
                } //eof get 
                set
                {
                    userObj = value;
    
                } //eof set 
    
            } //eof prop 
    
            #endregion UserObj
    
            #region ListTabWizard
    
    
            private List _ListWizard;
    
            [Bindable(true)]
            [Category("Appearance")]
            [Description(" The data structure used for databinding the menu ")]
            public List ListWizard
            {
                get { return _ListWizard; }
                set { _ListWizard = value; }
            }
    
            #endregion ListWizard
    
            #endregion FieldsAndProps
    
            #region Constructors
            public GPMenu()
            {
                //Statement to run while initialize of control  
            }
            #endregion Constructors
    
            #region Overrides
    
            public override void RenderControl(HtmlTextWriter writer)
            {
                RenderContents(writer);
            }
    
            protected override void RenderContents(HtmlTextWriter output)
            {
                //Codes for rendering html to be written here   
                output.WriteBeginTag("div");
                output.WriteAttribute("class", _Caption);
                output.WriteAttribute("ID", this.ID);
                RenderChildren(output); // Render Child Control is Exists   
                output.WriteEndTag("div");
            }
    
            public override void DataBind()
            {
                this.Controls.Clear();
                base.DataBind();
    
                #region Debug
    
                //old configure the logger
                //logger.Debug("Custom GPMenu DataBind called ");
    
                #endregion Debug
    
                #region AddTheTopDiv
    
                Panel panTabMenuTop = new Panel();
                panTabMenuTop.ID = "panTabMenuTop";
                panTabMenuTop.CssClass = "CssClassPanTabMenuTop";
                this.Controls.Add(panTabMenuTop);
    
                #endregion AddTheTopDiv
    
                #region AddTheUlOpenTag
    
                HtmlGenericControl conGenUi = new HtmlGenericControl("ul");
                conGenUi.ID = "paakallo";
    
    
    
                #endregion AddTheUlOpenTag
    
    
                #region ForEachMenuItemInTheListAddTheLinks
    
                if (this.ListWizard == null)
                    throw new Exception(" The List of menu items is null for " + this.ID);
    
    
    
                #region ForEachWizardItem
    
                for (int iListMenuItem = 0; iListMenuItem < this.ListWizard.Count; iListMenuItem++)
                {
                    App.Models.TabWizard objMenuItem = this.ListWizard[iListMenuItem];
    
                    #region AddTheLiOpenTag
    
                    PlaceHolder objPlaceHolderLiOpen = new PlaceHolder();
                    objPlaceHolderLiOpen.Controls.Add(new LiteralControl("
  • ")); conGenUi.Controls.Add(objPlaceHolderLiOpen); #endregion AddTheLiOpenTag #region BuildTheLocalizedLink #region Check that the whole MenuItem data structure is not null if (objMenuItem == null) throw new Exception( "The building of the GPMenu failed since \n: " + " null MenuItem at " + iListMenuItem.ToString() + " for " + this.ID); #endregion Check that the whole MenuItem data structure is not null //the variant with LinkButton does PostBack == BAD !!! PlaceHolder objPlaceHolderLink = new PlaceHolder(); #region BuildTheLinkId_with_MenuItemId if (String.IsNullOrEmpty(objMenuItem.Link_Id.ToString())) { throw new Exception( "The building of the GPMenu failed since \n: " + " null or empty MenuItemId for " + iListMenuItem.ToString() + " for " + this.ID); } #endregion BuildTheLinkId_with_MenuItemId #region AddTheTextForTheLink_with_GuiPageLinkURL //check that this LinkItem points to a registered page if (objMenuItem.Link_Id == null) { throw new Exception( "The building of the GPMenu failed since \n: " + " null GuiPage for " + iListMenuItem.ToString() + " for " + this.ID); } string strActiveLinkCssClass = String.Empty; string strTabTxt = String.Empty; try { strTabTxt = objMenuItem.TabTitle; } catch (System.Exception ex) { continue; } #region BuildTheActualLink string strLinkTxt = String.Empty; strLinkTxt += "" + strTabTxt + ""; #endregion AddTheToolTip #region AddTheLabel_used_in_The_TabMenu objPlaceHolderLink.Controls.Add(new LiteralControl(strLinkTxt)); conGenUi.Controls.Add(objPlaceHolderLink); #endregion AddTheLabel_used_in_The_TabMenu #endregion BuildTheLocalizedLink #region AddTheLiCloseTag PlaceHolder objPlaceHolderLiClose = new PlaceHolder(); objPlaceHolderLiClose.Controls.Add(new LiteralControl("
  • ")); conGenUi.Controls.Add(objPlaceHolderLiClose); #endregion AddTheLiCloseTag } //eof foreach MenuItem in List #endregion ForEachWizardItem #endregion ForEachMenuItemInTheListAddTheLinks #region AddTheUlCloseTag this.Controls.Add(conGenUi); #region AddTheBottomDiv Panel panTabMenuBottom = new Panel(); panTabMenuBottom.ID = "panTabMenuBottom"; panTabMenuBottom.CssClass = "CssClassPanTabMenuBottom"; this.Controls.Add(panTabMenuBottom); #endregion AddTheBottomDiv #endregion AddTheUlCloseTag } //eof method #region TemplateMethods protected override void OnInit(EventArgs e) { base.OnInit(e); } //eof method protected override void CreateChildControls() { base.CreateChildControls(); this.CreateDynamicControls(); } //eof method protected override object SaveViewState() { return new Pair(base.SaveViewState(), null); } //eof method protected override void LoadViewState(object savedState) { base.LoadViewState(((Pair)savedState).First); EnsureChildControls(); } //eof method #endregion TemplateMethods #endregion Overrides } //eof class } //eof namespace using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Collections.Specialized; namespace App.Models { /// /// Serves as the model for the tabwizard page /// public class TabWizard { #region Properties #region TabWizardId public long tbGuiTabWizardId { get; set; } #endregion TabWizardId #region TabId public int TabId { get; set; } #endregion TabId #region Link_Id public int Link_Id { get; set; } #endregion Link_Id #region WizardId public int WizardId { get; set; } #endregion WizardId #region TabOrder public int TabOrder { get; set; } #endregion TabOrder #region TabTitle public string TabTitle { get; set; } #endregion TabTitle #region TabHasManyButtons public bool TabHasManyButtons { get; set; } #endregion TabHasManyButtons #region ButtonTitle public string ButtonTitle { get; set; } #endregion ButtonTitle #region Description public string Description { get; set; } #endregion Description #region ProcToStart public string ProcToStart { get; set; } #endregion ProcToStart #region ProcId public string ProcId { get; set; } #endregion ProcId #region ItemMetaId public string ItemMetaId { get; set; } #endregion ItemMetaId #region ItemId public string ItemId { get; set; } #endregion ItemId #region ItemStartProc public string ItemStartProc { get; set; } #endregion ItemStartProc #region ItemButtonToolTip public string ItemButtonToolTip { get; set; } #endregion ItemButtonToolTip #region ItemButtonText public string ItemButtonText { get; set; } #endregion ItemButtonText #region TypeOfTab public string TypeOfTab { get; set; } #endregion TypeOfTab #region WizardHasStepping public bool WizardHasStepping { get; set; } #endregion WizardHasStepping #region RunProcOnTabClick public bool RunProcOnTabClick { get; set; } #endregion RunProcOnTabClick #region TabIsPRS public bool TabIsPRS { get; set; } #endregion TabIsPRS #region ItemIsPRS public bool ItemIsPRS { get; set; } #endregion ItemIsPRS #region FlagPresentAreYouSurePrompt public bool FlagPresentAreYouSurePrompt { get; set; } #endregion FlagPresentAreYouSurePrompt #region PromptAreYouSureText public string PromptAreYouSureText { get; set; } #endregion PromptAreYouSureText #region PageId public int PageId { get; set; } #endregion PageId #region MenuId public int MenuId { get; set; } #endregion MenuId #endregion Properties #region Props #region Constructor public TabWizard(System.Data.DataRow dr) { if (dr["tbGuiTabWizardId"] != null && !(dr["tbGuiTabWizardId"] is DBNull)) this.tbGuiTabWizardId = System.Convert.ToInt64(dr["tbGuiTabWizardId"]); if (dr["TabId"] != null && !(dr["TabId"] is DBNull)) this.TabId = System.Convert.ToInt32(dr["TabId"]); if (dr["Link_Id"] != null && !(dr["Link_Id"] is DBNull)) this.Link_Id = System.Convert.ToInt32(dr["Link_Id"]); if (dr["WizardId"] != null && !(dr["WizardId"] is DBNull)) this.WizardId = System.Convert.ToInt32(dr["WizardId"]); if (dr["TabOrder"] != null && !(dr["TabOrder"] is DBNull)) this.TabOrder = System.Convert.ToInt32(dr["TabOrder"]); if (dr["TabTitle"] != null && !(dr["TabTitle"] is DBNull)) this.TabTitle = System.Convert.ToString(dr["TabTitle"]); if (dr["TabHasManyButtons"] != null && !(dr["TabHasManyButtons"] is DBNull)) this.TabHasManyButtons = System.Convert.ToBoolean(dr["TabHasManyButtons"]); if (dr["ButtonTitle"] != null && !(dr["ButtonTitle"] is DBNull)) this.ButtonTitle = System.Convert.ToString(dr["ButtonTitle"]); if (dr["Description"] != null && !(dr["Description"] is DBNull)) this.Description = System.Convert.ToString(dr["Description"]); if (dr["ProcToStart"] != null && !(dr["ProcToStart"] is DBNull)) this.ProcToStart = System.Convert.ToString(dr["ProcToStart"]); if (dr["ProcId"] != null && !(dr["ProcId"] is DBNull)) this.ProcId = System.Convert.ToString(dr["ProcId"]); if (dr["ItemMetaId"] != null && !(dr["ItemMetaId"] is DBNull)) this.ItemMetaId = System.Convert.ToString(dr["ItemMetaId"]); if (dr["ItemStartProc"] != null && !(dr["ItemStartProc"] is DBNull)) this.ItemStartProc = System.Convert.ToString(dr["ItemStartProc"]); if (dr["ItemButtonToolTip"] != null && !(dr["ItemButtonToolTip"] is DBNull)) this.ItemButtonToolTip = System.Convert.ToString(dr["ItemButtonToolTip"]); if (dr["ItemButtonText"] != null && !(dr["ItemButtonText"] is DBNull)) this.ItemButtonText = System.Convert.ToString(dr["ItemButtonText"]); if (dr["TypeOfTab"] != null && !(dr["TypeOfTab"] is DBNull)) this.TypeOfTab = System.Convert.ToString(dr["TypeOfTab"]); if (dr["WizardHasStepping"] != null && !(dr["WizardHasStepping"] is DBNull)) this.WizardHasStepping = System.Convert.ToBoolean(dr["WizardHasStepping"]); if (dr["RunProcOnTabClick"] != null && !(dr["RunProcOnTabClick"] is DBNull)) this.RunProcOnTabClick = System.Convert.ToBoolean(dr["RunProcOnTabClick"]); if (dr["TabIsPRS"] != null && !(dr["TabIsPRS"] is DBNull)) this.TabIsPRS = System.Convert.ToBoolean(dr["TabIsPRS"]); if (dr["ItemIsPRS"] != null && !(dr["ItemIsPRS"] is DBNull)) this.ItemIsPRS = System.Convert.ToBoolean(dr["ItemIsPRS"]); if (dr["FlagPresentAreYouSurePrompt"] != null && !(dr["FlagPresentAreYouSurePrompt"] is DBNull)) this.FlagPresentAreYouSurePrompt = System.Convert.ToBoolean(dr["FlagPresentAreYouSurePrompt"]); if (dr["PromptAreYouSureText"] != null && !(dr["PromptAreYouSureText"] is DBNull)) this.PromptAreYouSureText = System.Convert.ToString(dr["PromptAreYouSureText"]); if (dr["PageId"] != null && !(dr["PageId"] is DBNull)) this.PageId = System.Convert.ToInt32(dr["PageId"]); if (dr["LinkURL"] != null && !(dr["LinkURL"] is DBNull)) this.LinkURL = System.Convert.ToString(dr["LinkURL"]); if (dr["MenuId"] != null && !(dr["MenuId"] is DBNull)) this.MenuId = System.Convert.ToInt16(dr["MenuId"]); } //eof constructor #endregion Constructor #region LinkURL private string _LinkURL = String.Empty; public string LinkURL { get { return _LinkURL; } set { _LinkURL = value; } } #endregion LinkURL #endregion Props } //eof class } //eof namespace

提交回复
热议问题