TheBeerHouse 系列三:从表示层开始上

~~刚完成一个小功能所以透透气我先说说WebPar:

下图是TheBeerHouse模板页的头部~~每个页必须有一个WebPartManager~~大家都知道了吧~~

我们来看看aspx~~上图就是反映下面代码的,作用就是切换WebPar的当前的模式,以及应用范围,不过~~
安全验证被WebPar管理了.,......


<%@ Control Language="C#" AutoEventWireup="true" CodeFile="PersonalizationManager.ascx.cs" Inherits="MB.TheBeerHouse.UI.Controls.PersonalizationManager" %>
<div style="text-align: right;">
   
<asp:WebPartManager ID="WebPartManager1" runat="server" />
   
<asp:LinkButton ID="btnBrowseView" runat="server" OnClick="btnBrowseView_Click" meta:resourcekey="btnBrowseViewResource1">Browse View</asp:LinkButton>&nbsp;|&nbsp;
   
<asp:LinkButton ID="btnDesignView" runat="server" OnClick="btnDesignView_Click" meta:resourcekey="btnDesignViewResource1">Design View</asp:LinkButton>&nbsp;|&nbsp;
   
<asp:LinkButton ID="btnEditView" runat="server" OnClick="btnEditView_Click" meta:resourcekey="btnEditViewResource1">Edit View</asp:LinkButton>&nbsp;|&nbsp;
   
<asp:LinkButton ID="btnCatalogView" runat="server" OnClick="btnCatalogView_Click" meta:resourcekey="btnCatalogViewResource1">Catalog View</asp:LinkButton>
   
<asp:Label runat="server" ID="panPersonalizationModeToggle">
      
&nbsp;|&nbsp;
      
<asp:LinkButton ID="btnPersonalizationModeToggle" runat="server" OnClick="btnPersonalizationModeToggle_Click" meta:resourcekey="btnPersonalizationModeToggleResource1">Switch Scope (current = {0})</asp:LinkButton>
   
</asp:Label>
</div>



//--细心的朋友可能发现了
 meta:resourcekey="btnPersonalizationModeToggleResource1">是从Controls\App_LocalResources中取全球化设置用的App_LocalResources的主目录的设置可以应用于所有的目录,而Controls的设置应用于该自目录

有的朋友可能要问~~权限怎么办~~这样做不是全都能修改了么?别着急~~继续往下看:~~首先恶补点知识阿~~
1这是  WebPar:的流量模式
PersonalizationManager.ascx-是进入主页的时候切换编辑网上的WebPar模式的管理页浏览模式,
DesignDisplayMode(设计模式)。在设计模式中,会显示各区域的用户界面 (UI),然后用户可以拖动控件来更改布局。
EditDisplayMode  显示特殊的编辑 UI 元素并使最终用户能够在页面上编辑控件
CatalogDisplayMode 显示特殊的目录 UI 元素并使最终用户能够添加和移除页面控件。
ConnectDisplayMode 显示特殊的连接 UI 元素并使最终用户能够连接 Web 部件控件。

2.因为浏览模式和设计模式始终是受支持的。可能发生变化的显示模式是编辑、目录和连接模式。这些显示模式中,每一个都与特定类型的 ToolZone 控件相关联。正是网页上存在这种特定类型的区域,特定显示模式才会添加到,所以要确定显示模式。
对应于页上存在的区域控件类型,SupportedDisplayModes 属性只包含页上实际可用的显示模式。

3.关于权限     panPersonalizationModeToggle.Visible = WebPartManager1.Personalization.CanEnterSharedScope;当有admin权限的时候修改是关于全部人的。否则是自己哦




using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using MB.TheBeerHouse;
using MB.TheBeerHouse.BLL.Polls;

namespace MB.TheBeerHouse.UI.Controls
{
   
public partial class PersonalizationManager : System.Web.UI.UserControl
   
{
      
protected void Page_Load(object sender, EventArgs e)
      
{
         
if (!this.IsPostBack)
            UpdateUI();
      }


      
protected void UpdateUI()
      
{
          
//---------------------------WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.BrowseDisplayMode)通过查找确定某种模式是否可用
          
//---如果可以用则Link-- btnBrowseView.Enabled=true
         btnBrowseView.Enabled = WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.BrowseDisplayMode);
         btnDesignView.Enabled 
= WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.DesignDisplayMode);
         btnEditView.Enabled 
= WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.EditDisplayMode);
         btnCatalogView.Visible 
= WebPartManager1.SupportedDisplayModes.Contains(WebPartManager.CatalogDisplayMode);


         
//看看用户是否有权限显示-管理员的用的按钮
          
//-该按钮的作用是可以切换到第是不把-对窗体的设计应用于自己,还是应用于全部用户那
         panPersonalizationModeToggle.Visible = WebPartManager1.Personalization.CanEnterSharedScope;
         
//--显示管理员的设置应用的范围户状态
         btnPersonalizationModeToggle.Text = string.Format(btnPersonalizationModeToggle.Text,
             WebPartManager1.Personalization.Scope.ToString() 
== "User"?"自己":"所有用户");
      }


      
protected void btnBrowseView_Click(object sender, EventArgs e)
      
{
         WebPartManager1.DisplayMode 
= WebPartManager.BrowseDisplayMode;
         UpdateUI();
      }


      
protected void btnDesignView_Click(object sender, EventArgs e)
      
{
         WebPartManager1.DisplayMode 
= WebPartManager.DesignDisplayMode;
         UpdateUI();
      }


      
protected void btnEditView_Click(object sender, EventArgs e)
      
{
         WebPartManager1.DisplayMode 
= WebPartManager.EditDisplayMode;
         UpdateUI();
      }


      
protected void btnCatalogView_Click(object sender, EventArgs e)
      
{
         WebPartManager1.DisplayMode 
= WebPartManager.CatalogDisplayMode;
         UpdateUI();
      }

      
/// <summary>
      
/// 只有具有管理权限的人才可以触发的事件
      
/// </summary>
      
/// <param name="sender"></param>
      
/// <param name="e"></param>

      protected void btnPersonalizationModeToggle_Click(object sender, EventArgs e)
      
{
          
//如果当前的WebPart设计关联到User(只应用于用户)则切换到应用于全部用户,反之亦然
         WebPartManager1.Personalization.ToggleScope();
         UpdateUI();
      }

   }

}

---又到困的时间了--这是用于验证成员是否具有权限的代码~~个人决的不错啊
      private bool _enablePersonalization = false;
      
public bool EnablePersonalization
      
{
         
get return _enablePersonalization; }
         
set
         
{
            _enablePersonalization 
= value;
           
//----------------------------如果用户验证了并且输入的是true则PersonalizationManager1显示
            PersonalizationManager1.Visible = (this.Page.User.Identity.IsAuthenticated && value);
         }

      }




..本系列是原创阿~~不要误会拉~~
posted @ 2007-05-14 00:48  苹果王子  阅读(3523)  评论(9编辑  收藏  举报