I want to do something like (Updated example):
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>{0}:GPMenu>")]
[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