zoukankan      html  css  js  c++  java
  • DelegateControl:SharePoint Server 2007内置的一个“用户控件包装器”

    相信很多人都在使用用户控件包装器来开发Web Part,原因很简单,创建一个用户控件比直接用代码来写一个Web Part要简单N倍,特别对于界面比较丰富的Web Part而言。实际上,不仅仅你有这样的感觉,就连SharePoint产品开发组都有这样的感觉。在SharePoint Server 2007里面,对于界面就大量使用了用户控件。不相信?用资源管理器打开SharePoint服务器上的“C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES”目录,看到了什么?是不是一大堆.ascx用户控件?如果你再尝试用记事本打开这个目录下的“SearchArea.ascx”,猜猜你看到的是什么?没错,这个用户控件就是出现在SharePoint页面右上方的那个搜索框。



    那么SharePoint Server 2007自己是如何将这些用户控件放到SharePoint页面上的呢?就是通过DelegateControl这个东东。DelegateControl位于Microsoft.SharePoint.WebControls命名空间之下,你可以在SharePoint SDK里面看到关于它的内容

    下面我们来利用DelegateControl,将我们自己创建的一个用户控件放到SharePoint页面上。

    首先,用Visual Studio 2005创建一个用户控件,向用户控件窗体上拖一个Calender控件。为了减少部署的复杂性,我们直接将这个用户控件的后台代码写到.ascx里面,而不采用Code-Behind的方式。



    在“C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\CONTROLTEMPLATES”这个目录下创建一个新的子目录“CalendarDemo1”,将我们做好的“CalendarDemo1.ascx”文件放到这个目录中。

    为了将我们创建的用户控件“安装”到SharePoint Server上,我们需要用到“Feature”这个新的SharePoint Server特性。我们来创建一个新的Feature.xml文件:



    然后再创建一个“Control.xml”,来描述用户控件的信息,注意,在这个文件中,我们将控件命名为“CalendarDemo1”(Id="CalendarDemo1"):

     

    在服务器的“C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\FEATURES”目录创建一个新的子目录“DelegateControlDemo1”来放我们的Feature。将“Feature.xml”和“Control.xml”这两个文件拷贝到这个目录中。



    然后在服务器的命令提示符里面执行“stsadm -o installfeature -filename DelegateControlDemo1\Feature.xml”来安装这个Feature:


    由于在“Feature.xml”中,我们指定了这个Feature是安装到服务器场(Farm)上面的,所以我们现在打开SharePoint 3.0管理中心,应该是可以在“管理服务器场功能”里面看到我们命名为“DelegateControlDemo1”的Feature的:

     

    确认“DelegateControlDemo1”这个Feature是处于启动状态的。现在,用SharePoint Designer打开这个服务器场里面的一个SharePoint站点,打开一个页面,在代码视图中直接写入:

     

    其实就是很简单的一句:<SharePoint:DelegateControl ControlId="CalendarDemo1" RunAt="server" />,DelegateControl控件的其他属性的用法可以从上面给出的SDK里面查到。

    现在在IE中打开SharePoint页面,我们就可以看到:

     

    在Patrick Tisseghem的blog上,也有一篇介绍DelegateControl的文章

  • 相关阅读:
    【leetcode】416. Partition Equal Subset Sum
    【leetcode】893. Groups of Special-Equivalent Strings
    【leetcode】892. Surface Area of 3D Shapes
    【leetcode】883. Projection Area of 3D Shapes
    【leetcode】140. Word Break II
    【leetcode】126. Word Ladder II
    【leetcode】44. Wildcard Matching
    【leetcode】336. Palindrome Pairs
    【leetcode】354. Russian Doll Envelopes
    2017.12.22 英语面试手记
  • 原文地址:https://www.cnblogs.com/kaneboy/p/2436923.html
Copyright © 2011-2022 走看看