组合控件






4.56/5 (50投票s)
2004年12月18日
2分钟阅读

270420

2814
用于 ASP.NET DHTML 选项卡、树、面板、菜单的 4 合 1 组件 - 水平、垂直、弹出、淡入淡出效果

引言
这是一个有助于生成选项卡、菜单、滑块栏和树形视图的控件。 这些控件是“即时”从 XML 动态创建的。
背景
我们看到许多包含大量控件的网页。 市场上可用的大多数控件都非常昂贵,并且它们只做一项工作(即,如果它是菜单控件,我们无法将其用于选项卡)。 此控件具有所有内置功能,包括安全性。 例如,用户可能希望选项卡中的某些项目对特定用户组(例如,管理员)可见,而一些不太重要的项目对普通用户可见。 在这种情况下,它起着重要的作用。
此控件非常易于使用。 该控件公开了一些公共属性来设置数据、外观以及面板的事件。 通过设置这些属性,可折叠面板可以很好地用于对信息进行分组。
Using the Code
用户控件有六个公共属性
Controltype
- 用于指定控件的类型(选项卡、树、面板、菜单)Display
- 用于设置控件的对齐方式(仅适用于 Controltype = menu)PageTitle
- 用于设置页面标题(仅适用于 Controltype = tab)MainMenuSelected
- 用于设置主菜单(仅适用于 Controltype = tab)SubMenuSelected
- 用于设置选定的子菜单(仅适用于 Controltype = tab)ImageUrl
- 用于设置树中的图像(仅适用于 Controltype = tree)。
<%@ Register TagPrefix="CONTROL" Namespace="Controls" Assembly="FOURINONE"%>
// for tab
<CONTROL:FourinOne runat="server"
PageTitle="Congress Type" Controltype="tab"
MainMenuSelected="2" SubMenuSelected="1" />
// for tree
<CONTROL:FourinOne runat="server" Controltype="tree" />
// for panel bar
<CONTROL:FourinOne runat="server" Controltype="panel" />
// for menu - horizontal
<CONTROL:FourinOne runat="server" Controltype="menu" Display="h" />
// for menu - vertical
<CONTROL:FourinOne runat="server" Controltype="menu" Display="v" />
为了动态生成菜单、树、面板或选项卡,XML 应该采用以下形式
<Menu>
<MainMenu Label="Registration" BaseURL="SearchCongress.aspx" MenuID="8"
MainSecurity="AM" MenuSequence="1" ImageUrl="xp_documents.gif">
<SubMenu Label="Search" URL="SearchCongress.aspx" MenuID="8"
Security="AM" SubMenuID="9" SubMenuSequence="1"
ImageUrl="xp_documents.gif"/>
<SubMenu Label="Add Company" URL="CompanyDetails.aspx" MenuID="8"
Security="A" SubMenuID="6" SubMenuSequence="4"
ImageUrl="xp_documents.gif"/>
<SubMenu Label="New Order" URL="NewOrder.aspx" MenuID="8" Security="AM"
SubMenuID="7" SubMenuSequence="5" ImageUrl="xp_documents.gif"/>
</MainMenu>
<MainMenu Label="Maintenance" BaseURL="Congress.aspx" MenuID="6"
MainSecurity="A" MenuSequence="4" ImageUrl="xp_documents.gif">
<SubMenu Label="Congress Type" URL="Congress.aspx"
MenuID="6" Security="A" SubMenuID="1"
SubMenuSequence="1" ImageUrl="xp_documents.gif"/>
<SubMenu Label="Event Type" URL="EventType.aspx" MenuID="6" Security="A"
SubMenuID="2" SubMenuSequence="2" ImageUrl="xp_documents.gif"/>
<SubMenu Label="Sales Type" URL="SalesType.aspx" MenuID="6" Security="A"
SubMenuID="3" SubMenuSequence="3" ImageUrl="xp_documents.gif"/>
<SubMenu Label="Venue" URL="CongressVenue.aspx" MenuID="6" Security="A"
SubMenuID="4" SubMenuSequence="4" ImageUrl="xp_documents.gif"/>
<SubMenu Label="Office" URL="Office.aspx" MenuID="6" Security="A"
SubMenuID="6" SubMenuSequence="6" ImageUrl="xp_documents.gif"/>
<SubMenu Label="Sales Person" URL="SalesPerson.aspx"
MenuID="6" Security="A" SubMenuID="7" SubMenuSequence="7"
ImageUrl="xp_documents.gif"/>
<SubMenu Label="Tax Rate" URL="TaxRate.aspx" MenuID="6" Security="A"
SubMenuID="8" SubMenuSequence="8" ImageUrl="xp_documents.gif"/>
<SubMenu Label="User" URL="User.aspx" Security="A" MenuID="6"
SubMenuID="9" SubMenuSequence="9" ImageUrl="xp_documents.gif"/>
<SubMenu Label="Option Type" MenuID="6" URL="PriceOption.aspx"
Security="A" SubMenuID="10" SubMenuSequence="10"
ImageUrl="xp_documents.gif"/>
</MainMenu>
</Menu>
MainMenu
节点中的 MainSecurity
属性和 SubMenu
节点中的 Security
属性用于在显示菜单项时实现安全性。 要在此控件中实现安全性,请将 UserType
保存在会话中,例如(管理员为 A
),当用户登录系统时。 通过比较会话中的值,可以实现安全性。
private bool isAuthorised(string sSecString, string sSecType)
{
return(sSecString.IndexOf(sSecType)>=0);
}
如果用户有权查看该页面,则 isAuthorized
方法返回 true
,否则返回 0
。 例如,我使用了两个用户,管理员 (A
) 和版主 (M
)。 我已经提到只能由管理员查看的页面为 A
,以及可以由他们两个查看的页面为 AM
。 可以使用 *web.config* 配置菜单。
<add key="MenuXMLPath" value="/helper/" />
<add key="MainMenuFontColor" value="#ffffff" />
<add key="MainMenuShadowColor" value="#999999" />
<add key="MainMenubGColor" value="#000088" />
<add key="MainMenuMouseoverColor" value="#000088" />
<add key="SubmenuBgColor" value="#cfd3d8" />
<add key="SubmenuMouseoverColor" value="#ffffff" />
<add key="SubmenuBorderColor" value="#0000cc" />
<add key="SubmenuFontColor" value="#000000" />
<add key="SubmenuMouseOverFontColor" value="#000000" />
<add key="SubmenuShadowColor" value="#666666" />