文中大部分内容来自SharePoint Services 3.0 SDK
有两种方式:
一种方式是创建一个继承自System.Web.UI.WebControls.WebParts.WebPart的Web Part(SharePoint SDK中是推荐使用这种方式的),这个WebPart不仅可以在SharePoint Services中使用,也可以用于其他ASP.net程序中;
另一个方式是创建Windows SharePoint Services WebPart 类,也就是继承自Microsoft.SharePoint.WebPartPages.WebPart。这个WebPart只能在SharePoint Services中使用。
一、首先介绍第一种方式:创建一个基本的Web Part
Step 1:创建一个ASP.Net Web Part assembly.
启动Visual Studio 2005
创建一个c# class library项目,项目名称假定为HelloWorldWebPart。
添加引用System.Web。
在.cs文件中,将下面的代码复制过来。
using System;
using System.Text;
using System.Web.UI.WebControls.WebParts;
namespace MyWebPartLibrary
{
public class HelloWorldWebPart : WebPart
{
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
writer.Write("Hello, World!");
}
}
}
注意此处使用的是System.Web.UI.WebControls.WebParts
现在可以编译此解决方案,会生成一个dll文件。
Step 2:将生成的dll文件放到bin或GAC(global assembly cache, C:/WINDOWS/assembly)中
Bin目录是指SharePoint web application 跟目录下的bin目录,如:C:/Inetpub/wwwroot/wss/VirtualDirectories/80/bin。
Step 3:(可选)如果把dll放在bin目录下,设置安全属性(security attributes)
找到SharePoint web application根目录下的web.config文件,修改trust level属性,如<trust level="WSS_Minimal">
。
Step 4:
将生成的Web Part添加到SafeControls列表中
打开
SharePoint web application根目录下的web.config文件,在SafeControls中添加下面的语句:
<SafeControl Assembly="HelloWorldWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" Namespace="MyWebPartLibrary" TypeName="*" Safe="True" AllowRemoteDesigner="True"/>
注意此处,一定要仔细,我在测试时,把Assembly写成了Assemply,结果浪费了我几个小时去找错误。
关于如何查看PublickeyToken,可以网搜一下,最简单的方式是添加到GAC中,就可以直接查看了。
在全局程序集缓存中部署的应用程序必须具有强名称, 强命名可以直接右键单击工程,选择属性,然后选择Signing标签,选中sign the assembly,然后新建一个强名称,如key.snk。
Step 5:创建.webpart文件
打开http://myserver/_layouts/newdwp.aspx,其中myserver是SharePoint站点部署的服务器的名称。
此时你会看到MyWebPartLibrary.HelloWorldWebPart出现在列表中,在它前面的check box中打勾。
最后点击Populate Gallery,如果不出什么问题,Web Part应该已经添加到Team Site Gallery中。
Step 6:将Web Part添加到SharePoint站点中的页面上
导航到SharePoint站点
在要添加Web Part的页面中,点击Site Actions并选择Edit Page。
点击Add a Web Part,在随后出现的对话框中,点击底部的Advanced Web Part gallery and options。
打开Team Site Gallery,将HelloWordWebPart拖到页面上。