MOSS点滴(2):自定义Application Page

在MOSS中后台管理的页面都是Application Page,比如网站设置的页面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我们要修改只能手动的使用其他工具来修改,我们也可以添加Application Page,必须放在C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS目录下,它对应的虚拟路径为_layouts。所有的Application Page都使用application.master这个母版页,我们自定义的Application Page也是一样,可以使用内嵌代码也可以使用后置代码。自定义的application page继承自LayoutsPageBase类,下面我们就来做两个自定义的Application Page,下面是项目的结构:

1

Feature.xml中代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="86689158-7048-4421-AD21-E0DEF0D67C81"
   Title="自定义ApplicationPage"
   Description="使用SPTreeViw演示自定义ApplicationPage"
   Version="1.0.0.0"
   Scope="Web"
   Hidden="FALSE"        
   ImageUrl="TPG\PithHelmet.gif"        
   xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml" />
</ElementManifests>
</Feature>

ApplicationPage1.aspx和ApplicationPage2.aspx就是我们自定义的Application Page,ApplicationPage1.aspx演示的是在一个列表库的列表项的编辑菜单里出现一个链接,统计该列表的信息,如下图:

2

要添加此菜单须在Elements.xml中填加如下代码:

<!--  出现在控件的编辑项中 -->
< CustomAction  Id ="CustomApplicationPage1"
RegistrationType
="List"
RegistrationId
="101"
ImageUrl
="/_layouts/images/GORTL.GIF"
Location
="EditControlBlock"
Sequence
="240"
Title
="此文档库信息"   >
< UrlAction  Url ="~site/_layouts/CustomApplicationPages/ApplicationPage1.aspx?ItemId={ItemId}&amp;ListId={ListId}" />
</ CustomAction >


RegistrationType="List":代表注册的类型是列表.
Location="EditControlBlock":代表菜单将出现在控件编辑项当中.
UrlAction 是它的链接,URL中的ItemId 和ListId是通过 QueryString得到的。


ApplicationPage1.cs中代码如下:

using  System;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  Microsoft.SharePoint;
using  Microsoft.SharePoint.WebControls;

namespace  CustomApplicationPages 
{
  
public   class  ApplicationPage1 : LayoutsPageBase 
 {
    
protected  Label lblSiteTitle;
    
protected  Label lblSiteID;
    
protected  Label lblSiteUrl;
    
protected  Label lblListID;
    
protected  Label lblListTile;
    
protected  Label lblRootFolderUrl;
    
protected  Label lblDocumentID;
    
protected  Label lblDocumentName;
    
protected  Label lblDocumentUrl;
    
protected  Label lblDocumentTemplateUrl;
    
protected  Label lblFileAuthor;
    
protected  Label lblFileSize;
    
protected  Label lblFileLastModified;
    
protected  Label lblFileCheckOutStatus;

    
protected   override   void  OnLoad(EventArgs e) 
   {
      SPSite siteCollection  =   this .Site;
      SPWeb site 
=   this .Web;
      lblSiteTitle.Text 
=  site.Title;
      lblSiteUrl.Text 
=  site.Url.ToLower();      
      
string  ListId  =  Request.QueryString[ " ListId " ];
      lblListID.Text 
=  ListId;
      SPList list 
=  site.Lists[ new  Guid(ListId)];
      lblListTile.Text 
=  list.Title;
      lblRootFolderUrl.Text 
=  list.RootFolder.Url;      
      
string  ItemId  =  Request.QueryString[ " ItemId " ];
      lblDocumentID.Text 
=  ItemId;
      SPListItem item 
=  list.Items.GetItemById(Convert.ToInt32(ItemId));
      lblDocumentName.Text 
=  item.Name;
      lblDocumentUrl.Text 
=  item.Url;

      
if  (list  is  SPDocumentLibrary)
    {
        SPDocumentLibrary documentLibrary 
=  (SPDocumentLibrary)list;
        lblDocumentTemplateUrl.Text 
=  documentLibrary.DocumentTemplateUrl;

        SPFile file 
=  site.GetFile(item.Url);
        lblFileAuthor.Text 
=  file.Author.Name;
        lblFileSize.Text 
=  file.TotalLength.ToString( " 0,### " )  +   "  bits " ;
        lblFileLastModified.Text 
=   " By  "   +  file.ModifiedBy.Name  +
                                   
"  on  "   +  file.TimeLastModified.ToLocalTime().ToString();
        lblFileCheckOutStatus.Text 
=  file.CheckOutStatus.ToString();
      }
    }
    
  }
}


结果如下图:

3

ApplicationPage2.aspx中我们使用控件SPTreeView来显示该站点的文件夹结构,我们将菜单添加到“网站操作“中,并且设置只有管理员权限才可以看到,如下图:

4

Elements.xml中填加如下代码:

<!--  有管理员权限才可以察看  -->
< CustomAction  Id ="CustomApplicationPage2"
GroupId
="SiteActions"
Location
="Microsoft.SharePoint.StandardMenu"
Sequence
="2006"
Title
="获取站点信息"
Description
="使用SPTreeView获取站点信息"
RequireSiteAdministrator
="True" >
< UrlAction  Url ="~site/_layouts/CustomApplicationPages/ApplicationPage2.aspx" />
</ CustomAction >


RequireSiteAdministrator="True":改属性说明该项操作只有拥有管理员权限的用户才可以操作

ApplicationPage2.cs中代码如下:

using  System;
using  System.Web;
using  System.Web.UI;
using  System.Web.UI.WebControls;

using  Microsoft.SharePoint;
using  Microsoft.SharePoint.WebControls;

namespace  CustomApplicationPages
{
  
public   class  ApplicationPage2 : LayoutsPageBase 
  {    
    
protected  SPTreeView treeSitesFiles;
    
const   string  siteImg  =   @" \_layouts\images\FPWEB16.GIF " ;
    
const   string  foloerImg  =   @" \_layouts\images\FOLDER16.GIF " ;
    
const   string  ghostedFileImg  =   @" \_layouts\images\NEWDOC.GIF " ;
    
const   string  unGhostedFileImg  =   @" \_layouts\images\RAT16.GIF " ;

    
protected   override   void  OnLoad(EventArgs e)
    {
      SPWeb site 
=  SPContext.Current.Web;
      SPFolder rootFolder 
=  site.RootFolder;
      TreeNode rootNode 
=   new  TreeNode(site.Url, site.Url, siteImg);
      LoadFolderNodes(rootFolder, rootNode);
      treeSitesFiles.Nodes.Add(rootNode);
      treeSitesFiles.ExpandDepth 
=   1 ;
    }

    
protected   void  LoadFolderNodes(SPFolder folder, TreeNode folderNode)
    {
      
foreach  (SPFolder childFolder  in  folder.SubFolders) 
      {
        TreeNode childFolderNode 
=   new  TreeNode(childFolder.Name, childFolder.Name, foloerImg);
        childFolderNode.NavigateUrl 
=  Site.MakeFullUrl(childFolder.Url);
        LoadFolderNodes(childFolder, childFolderNode);        
        folderNode.ChildNodes.Add(childFolderNode);
      }

      
foreach  (SPFile file  in  folder.Files) 
      {
        TreeNode fileNode;
        
if  (file.CustomizedPageStatus  ==  SPCustomizedPageStatus.Uncustomized) 
        {
            fileNode 
=   new  TreeNode(file.Name, file.Name, ghostedFileImg);          
        }
        
else  
        {
            fileNode 
=   new  TreeNode(file.Name, file.Name, unGhostedFileImg);
        }
        fileNode.NavigateUrl 
=  Site.MakeFullUrl(file.Url);
        folderNode.ChildNodes.Add(fileNode);
      }
    } 
  }
}


效果如下图:

5

如何调试:
1.修改当前web应用程序的配置文件如下:

< configuration >
  
< SharePoint >
    
< SafeMode  CallStack ="true"   />
   
</ SharePoint >
  
< system.web >
    
< customErrors  mode ="Off"   />
    
< compilation  debug ="true"   />
  
</ system.web >
</ configuration >
2.然后附加w3wp进程,设置断点即可调试了。
MCP4728 电路及stm32F103程序移植 写在前面 通过优快云查到一些MCP4728 的程序,结合程序及datasheet对于驱动的描述,理清了思路 感谢开路者! MCP4728的电路比较简单,见下文描述 应用电路 datasheet: 实际测试电路: SCL接stm32的PB10,SDA接PB11 RDY/BSY引脚和LDCA引脚,悬空 解释见截图: MCP4728地址 选择任意输出通道写入DAC输入寄存器 应用程序 int mcp4728_write_all_channel(float vol1, float vol2, fl 阅读详情

相关推荐

STM32嵌入式开发实战:如何用miniLZO压缩算法节省70%存储空间(附完整工程)

本文详细介绍了如何在STM32嵌入式开发中使用miniLZO无损压缩算法实现高达70%的存储空间节省。通过对比分析不同轻量级算法,重点讲解miniLZO的内存优化配置、分块压缩策略和完整工程实现,帮助开发者有效解决嵌入式系统中的存储瓶颈问题。

ss78901的博客 881

剖析剖析我们的ApplicationMaster

ApplicationMaster 部分,这里是整个分布式程序的指挥中心, 为了追寻大神们的脚步,我们在源码里面添加了一些日志提示 ,跟着运行的轨迹,我们来翻开Master部分的迷雾。 且说上回我们说到 Client在申请了一个 Container 之后便把我们的jar提交到容器中执行了,接下来事情交给我们的ApplicationMaster 了,我们在 main方法里面添加我们的日志信息...

敏叔 5244

UE5摄像机抖动全攻略:从Perlin噪点到Sequence实战(附参数调优技巧)

本文深入解析UE5摄像机抖动技术,从Perlin噪点算法到CameraShakeBase蓝图应用,再到Sequence高级控制,提供全面的参数调优技巧。涵盖战斗、爆炸等场景的预设参数,帮助开发者实现专业级抖动效果,提升游戏沉浸感。

weixin_30300225的博客 96

YARN源码分析(一)-----ApplicationMaster

前言在之前两周主要学了HDFS中的一些模块知识,其中的许多都或多或少有我们借鉴学习的地方,现在将目光转向另外一个块,被誉为MRv2,就是yarn,在Yarn中,解决了MR中JobTracker单点的问题,将此拆分成了ResourceManager和NodeManager这样的结构,在每个节点上,还会有ApplicationMaster来管理应用程序的整个生命周期,的确在Yarn中,多了许多优秀的设

走在前往架构师的路上 1万+

银行监管报送系统系列介绍(二十一):银行监管报送系统总览

为保护法院案件当事人、利害关系人的合法权益,全面落实《最高人民法院、中国银行业监督管理委员会关于人民法院与银行业金融机构开展网络执行查控和联合信用惩戒工作的意见》(法【2014】266号),最高人民法院和银监会联合下发了《人民法院、银行业金融机构网络执行查控工作规范》(法【2015】321号),要求银行金融机构配合最高人民法院开展 “总对总”网络执行查控工作,并建立相应的业务系统,实现与法院的网络对接,协助法院完成对被执行人银行账户存款及其他金融资金的网络查询、冻结与扣划工作。

银行信息系统应用架构详解 2864

带有HSE组件的S32系列芯片中各子系统如何依次启动?

仔细阐述了上电后各个子系统的启动顺序,并给出了详细的启动步骤流程图。

车载系统攻城狮 1702

[翻译]No.9355 SharePoint Pages(4)之应用程序页

创建应用程序页  表面上看,应用程序页和网站页面相同,它就是向SharePoint用户提供功能的,但是,应用程序页时可以在SharePoint中认识网站或网站集都可以访问到的页面。此外,应用程序页因为不能进行定制,所以不需要在内容数据库中存储多个副本,而应用程序页的代码可以编译成DLL程序集,这样无论是在存取性能还是在执行性能上都会优于网站页面。从开发人员的角度看,应用程序页和网站页面最大的区别在...

weixin_30347335的博客 230

【DaVinci Developer专题】-36-创建一个“既读又写”的Sender Receiver Port(SR PR-Port)

有时会遇到SWC需要对一个Port进行“既可以读,也可以写”的操作。以下图为例,Test_A_SWC中Test_A_Port是P-Port;Test_B_SWC中Test_A_Port是R-Port。Test_C_SWC需要对Test_A_Port同时进行“读”和“写”。 该篇将详细介绍PR-Port的创建方法。 目录 1 创建一个S/R Port Interface 2 将一个PR-Port端口添加至Application Component 3 PR-Port端口初始化 4 Run.

「汽车电子助手」的博客 3013

AM启动--ApplicationMasterLauncher(五)

ApplicationMasterLauncher /** * ApplicationMasterLauncher即是一个服务,也是一个事件处理器,它处理AMLauncherEventType类型的事件,该类型事件有两种,分别是请求启动一个ApplicationMaster的LAUNCH事件和请求清理一个ApplicationMaster的CLEANUP事件. *ApplicationMas...

巴氏旅人的专栏 746

CentOS 7 Linux yum 安装 Docker,解决 Docker 镜像拉取失败问题

本文详细介绍了在 CentOS 7 系统上通过 yum 安装 Docker 的完整流程,包括卸载旧版本、配置阿里云国内镜像源、安装 Docker 及其组件、设置日志限制等关键步骤。针对国内用户常见的 Docker 镜像拉取失败问题,提供了两种实用解决方案:配置镜像加速器或通过代理访问官方源,并附带验证方法与排错指南,帮助读者高效完成 Docker 环境部署。

寒水馨 · 轻量级技术文档 · hanshuixin.org 1718

单线激光雷达的工作原理

单线激光雷达通过单一激光束的水平扫描和时间 / 相位测量,实现二维环境的距离感知,是低成本二维导航的核心传感器。尽管其无法直接提供三维信息,但其可靠性和经济性使其在消费级和工业级场景中广泛应用。随着技术发展,部分单线雷达通过振动镜或 MEMS 微振镜实现微小角度偏转,可近似模拟多线扫描效果,进一步拓展了应用边界。

谢谢大家的关注和点赞!这里只有纯纯的知识干货,没有一句废话。希望能实实在在帮到大家~要是觉得有用,别忘了给我点支持哟,你 1859

MOSS自定义Application Page

在MOSS中后台管理的页面都是Application Page,比如网站设置的页面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我们要修改只能手动的使用其他工具来修改,我们也可以添加Application Page,必须放在C:\Program Files\Common Files\Microsoft Shared\...

weixin_30881367的博客 85

修复 Outlook 中缺少的 Microsoft Teams 插件

在 Outlook 中缺少 Microsoft Teams 插件可能会限制您在邮件客户端中直接访问 Microsoft Teams 的功能。在本文中,我将向您介绍一些修复缺少 Microsoft Teams 插件的方法,并提供相应的源代码。如果问题仍然存在,请确保您的 Outlook 和 Microsoft Teams 都是最新版本,并尝试在不同的计算机上进行测试。在实际使用中,请根据您的需求进行适当的修改和调整。如果前面的步骤未能解决问题,您可以尝试重新安装 Microsoft Teams 插件。

CodeWWWCode的博客 5672

MOSS点滴(3):说说MOSS中的母版页

MOSS中有两种页面:Site Pages 和Application Pages,他们分别使用不同的母版页,Site Pages 使用的是Default.master, Application Pages使用的是Application.master。我们下面讨论的主要是针对default.master的,因为Application.master是不支持被定制的。Default.master在安装目...

fdqwfdsafdsa的博客 200

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

在MOSS2007上加载工作流出现以下错误:“The form cannot be displayed because session state is not available”...

我为MOSS2007的一个文档库创建工作流时,出现以下错误:The form cannot be displayed because session state is not available查到以下解决方案,由于时间紧张,没有翻译,直接拷贝到了下面:RESOLUTION for "The form cannot be displayed because session state i...

dixiangqie0365的博客 170

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

How to Add ASP.NET User Controls To Master Pages or Page Layouts

1. Create a folder in the root of your MOSS web application . 2. Add this folder as a Virtual Directory to your web application using IIS. 3. Copy the .ascx files you want to use into the new folde...

weixin_34327223的博客 79

Sharepoint Designer Can Open Site but Can't Edit Page(Others pc can edit my site page)

Havnot found the solusion.

jenny0810的专栏 890

MOSS2007 实现单点登陆

经过N天的时间终于把sso搞定了,现在抽出一些时间总结一下.希望对你有所帮助. 第一部分:在管理中心进行配置 1.打开 管理中心à操作 2.单击 管理单一登陆的设置 后进入设置页面,如下图 3. 单击”管理服务器设置 1. 单一登录管理员帐户: 此为启用SSO服务的账号. 这个账户须是单一登录服务账户所属网域中的成员:BO...

weixin_30902675的博客 75

在SharePoint2010中用out-of-box的方式自定制Application Pages(AccessDenied,Confirmation,Error,Login,RequestAcce...

在实际项目中需要对SharePoint2010中的AccessDenied页面进行自定制,于是乎上网搜索相关内容,经实际操作此方法可行,便以此文记录。 在SharePoint2010中,由于security的问题,master pages是不能够应用到application pages(AccessDenied,Confirmation,Error,Login,RequestAccess,Sig...

weixin_30652491的博客 125

MOSS 2010:Visual Studio 2010开发体验(4)——应用程序页面(ApplicationPage)

转载自:http://www.cnblogs.com/chenxizhang/archive/2010/04/04/1704106.html 这是我们以前经常做的事情。应用程序页面是指那些我们自定义程序所用到的页面。例如工作流页面等等。 以前做这个事情也相当麻烦,因为这个页面没有项目模板,需要自己编写。而且需要复制到特殊的目录中去,而且在编程的时候也会有不少要注意的。其中一个典型的问题就...

weixin_34258838的博客 86

MOSS 2010:Visual Studio 2010开发体验(19)——ECMAScript Object Model(一)

ECMAScript ClIEnt OM is SharePoint 2010 client object model extension for using with JavaScript or JScript. Few points to notice about ECMAScript Client OM:   ECMAScript object model can only be used...

weixin_34159110的博客 117
上一篇: MOSS点滴(1):如何开发和部署feature
下一篇: 坚持学习WF(6):开发可复用的宿主程序
fdqwfdsafdsa
博客等级 码龄18年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值