65.9K
CodeProject 正在变化。 阅读更多。
Home

组合控件

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.56/5 (50投票s)

2004年12月18日

2分钟阅读

viewsIcon

270420

downloadIcon

2814

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

Sample screenshot

引言

这是一个有助于生成选项卡、菜单、滑块栏和树形视图的控件。 这些控件是“即时”从 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" />
© . All rights reserved.