示例WEBPART开发部署指南
一、WEBPART开发
1、在SHAREPOINT上生成一个ASPX网页,里面可以只有HTML代码,但是必须注明哪一段是用来方置WEBPART的。新建一个文件,文件名为test4.aspx示例ASPX网页代码如下:
<!-- _lcid="1033" _version="11.0.5510" _dal="1" -->
<!-- _LocalBinding -->
<html dir="ltr" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns="http://www.w3.org/TR/REC-html40">
<title>EPMS Demo</title>
<head>
<meta name="WebPartPageExpansion" content="full">
<meta name="GENERATOR" content="Microsoft SharePoint" />
<meta name="ProgId" content="SharePoint.WebPartPage.Document" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="CollaborationServer" content="SharePoint Team Web Site" />
<meta http-equiv="Expires" content="0" />
<link rel="stylesheet" type="text/css" href="/_layouts/1033/styles/ows.css" />
<link href="wpresources/aims/default.css" rel="stylesheet" type="text/css" />
<link type="text/xml" rel="alternate" href="_vti_bin/spdisco.aspx" />
<meta name="Microsoft Theme" content="none, default">
<meta name="Microsoft Border" content="none">
</head>
<body marginwidth="0" marginheight="0" scroll="yes">
<!-- WEBPART开始 -->
<table border="1" width="100%" id="table1">
<tr>
<td> </td>
</tr>
</table>
<!-- WEBPART结束 -->
</body>
</html>
备注:该代码是通过用FRONTPAGE2003打开一个SHAREPOINT PORTAL网站后手工添加编辑得来的(就是用FRONTPAGE2003打开SHAREPOINT站点,然后在PORTAL上添加一个ASPX网页后,再编辑一下。完全可以用这段代码生成一个ASPX网页)。
2、将“<!-- WEBPART开始 -->”和“<!-- WEBPART结束 -->”中间的代码复制下来,这2个注释标记是表明这里要放置WEBPART的。在桌面上或者物理硬盘上的任意位置上手工新建一个TXT文本文件,然后将其更名为:“HelloWorld_InterFace.ascx”。
3、从MICROSOFT网站下载WEBPART的开发SDK,下载连接为:WebPartTemplatesforVSNetSample.EXE(点击下载),从已经安装了SHAREPOINT PORTAL的服务器上复制这些文件(Microsoft.SharePoint.dll,Microsoft.SharePoint.Portal.Admin.Search.dll,Microsoft.SharePoint.Portal.dll,Microsoft.SharePoint.Portal.SingleSignon.dll,Microsoft.SharePoint.Portal.SingleSignon.Security.dll,OWSSVR.DLL,SHTML.DLL,SSOCLI.DLL)到一个特定目录,比如:D:/SHAREPONT_DLL。
4、安装刚才下载的WEBPART SDK,安装前,建议将压缩包手工解压到一个目录中,然后双击SETUP.EXE来安装。安装时会要求你输入SHARPOINT DLL所存放的路径,可以输入刚才存放那些DLL的目录,如:D:/SHAREPONT_DLL。注意:在安装SDK前要把VS.NET关闭(开发时建议用VS.NET 2003)。
5、打开VS.NET 2003新建一个C#代码的WebPartLibrary工程,项目名称为:DEMO.WEBPART。新建完毕后,能够看到CS代码文件中自动引入了SHAREPOINT声明,同时自动引用了SHAREPOINT 的DLL,如果没有,可以在新建项目前重启机器。
6、把第2步中所建立的HelloWorld_InterFace.ascx文件添加进项目中。打开HelloWorld_InterFace.ascx,在页面上双击。会自动进入后置代码文件,然后在Page_Load事件中添加这段代码:
Response.Write("Hellow World");
7、打开“WebPart1.cs”,确认NAMESPACE为:DEMO.WEBPART。打开“WebPart1.dwp”,确认NAMESPACE为:DEMO.WEBPART。
8、在项目中添加一个CS类文件,文件名为:HelloWorldCode.cs。代码如下
using System;
using System.ComponentModel;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
using Microsoft.SharePoint.WebPartPages;
namespace DEMO.WEBPART
{
/// <summary>
/// Info
/// </summary>
[DefaultProperty("Text"),
ToolboxData("<{0}:HelloWorldCode runat=server></{0}:HelloWorldCode>"),
XmlRoot(Namespace="DEMO.WEBPART.HelloWorldCode")]
public class HelloWorldCode : Microsoft.SharePoint.WebPartPages.WebPart
{
private const string defaultText = "";
private string text = defaultText;
private Control webc;
[Browsable(true),
Category("Miscellaneous"),
DefaultValue(defaultText),
WebPartStorage(Storage.Personal),
FriendlyName("Text"),
Description("Text Property")]
public string Text
{
get
{
return text;
}
set
{
text = value;
}
}
/// <summary>
/// This method gets the custom tool parts for this Web Part by overriding the
/// GetToolParts method of the WebPart base class. You must implement
/// custom tool parts in a separate class that derives from
/// Microsoft.SharePoint.WebPartPages.ToolPart.
/// </summary>
///<returns>An array of references to ToolPart objects.</returns>
// public override ToolPart[] GetToolParts()
// {
// ToolPart[] toolparts = new ToolPart[2];
// WebPartToolPart wptp = new WebPartToolPart();
// CustomPropertyToolPart custom = new CustomPropertyToolPart();
// toolparts[0] = wptp;
// toolparts[1] = custom;
// return toolparts;
// }
/// <summary>
/// Render this Web Part to the output parameter specified.
/// </summary>
/// <param name="output"> The HTML writer to write out to </param>
///
protected override void RenderWebPart(HtmlTextWriter output)
{
// output.Write(SPEncode.HtmlEncode(Text));
this.EnsureChildControls();
this.webc.RenderControl(output);
}
protected override void CreateChildControls()
{
this.webc = this.Page.LoadControl("/usercontrols/HelloWorld_InterFace.ascx");
this.Controls.Add(this.webc);
}
}
}
“this.webc = this.Page.LoadControl("/usercontrols/HelloWorld_InterFace.ascx");“这行代码是指明要调用的用户控件位置,就是在网站的“usercontrols”文件夹下。确认NAMESPACE为:DEMO.WEBPART。
9、复制随本文附带的“keypair.snk”文件到C:/下。这个是一个秘匙文件必须要在编译时使用。打开“AssemblyInfo.cs”文件,在文件最后的
[assembly: AssemblyKeyFile("")]处,修改为:[assembly: AssemblyKeyFile("c://Keypair.snk")]。
10、打开SHAREPOINT的网站主目录下的web.config文件,如果是建立在“默认网站”下的话,则会自动生成web.config文件,如果是在另外建立的虚拟目录上的,则要手工建立或者复制。在web.config文件中的<SafeControls>添加这段代码:
<SafeControl Assembly="DEMO.WEBPART,Version=
1.0.0
.0, Culture=neutral,PublicKeyToken=dcb85ecf7e0013d3" Namespace="DEMO.WEBPART" TypeName="*" Safe="True" />
这里的PublicKeyToken是刚才用SNK文件生成的秘匙串,如果是用本文所带的SNK文件,就使用这段秘匙串,确保Assembly和Namespace内容相同。
开发部分到这里就结束了。下面是部署部分。
二、WEBPART部署
1、将编译时生成的DLL文件:DEMO.WEBPART.dll复制到SHAREPOINT网站所在的根目录中的BIN文件夹中,如果没有可以新建一个。也可以在编译项目前,把输出路径改为网站的根目录里的BIN文件夹,比如://SERVERHOST/Inetpub/wwwroot/bin。
2、将项目中的HelloWorld_InterFace.ascx文件复制到网站根目录中的“usercontrols”文件夹里,如果没有可以新建一个文件夹名字必须相同。其实到这里就是实现了ASP.NET所说的代码和界面分离了,复制上去的界面中是没有一点代码的,所有的代码都已经编译为一个DLL文件了。真的是很强大,封装性很好。
3、用FRONTPAGE 2003打开SHAREPOINT网站,打开第一步建立的test4.aspx。在页面的顶端添加下面这些代码:
<%@ Register TagPrefix="WpNs0" Namespace="DEMO.WEBPART" Assembly="DEMO.WEBPART, Version= 1.0.0 .0, Culture=neutral, PublicKeyToken=dcb85ecf7e0013d3" %>
<%@ Page language="C#" Inherits="Microsoft.SharePoint.WebPartPages.WebPartPage,Microsoft.SharePoint,Version= 11.0.0 .0,Culture=neutral,PublicKeyToken=71e9bce111e 9429c " %>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version= 11.0.0 .0, Culture=neutral, PublicKeyToken=71e9bce111e 9429c " %>
<%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version= 11.0.0 .0, Culture=neutral, PublicKeyToken=71e9bce111e 9429c " %>
这里的PublicKeyToken是刚才用SNK文件生成的秘匙串,如果是用本文所带的SNK文件,就使用这段秘匙串,确保Assembly和Namespace内容相同。
4、将“<!-- WEBPART开始 -->”和“<!-- WEBPART结束 -->”中间的代码删除,替换成下面这段代码:
<WpNs0:HelloWorldCode runat="server" WebPart="true" __WebPartId="{C 65F 9B11-371E-48B2-BBDF -62020F 3371E5}">
<WebPart xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/WebPart/v2">
<Title>项目明细/Projects Detail</Title>
<FrameType>None</FrameType>
<Description>Description...</Description>
<IsIncluded>true</IsIncluded>
<PartOrder>1</PartOrder>
<FrameState> Normal </FrameState>
<Height />
<Width />
<AllowRemove>true</AllowRemove>
<AllowZoneChange>true</AllowZoneChange>
<AllowMinimize>true</AllowMinimize>
<IsVisible>true</IsVisible>
<DetailLink />
<HelpLink />
<Dir>Default</Dir>
<PartImageSmall />
<MissingAssembly />
<PartImageLarge />
<IsIncludedFilter />
<ExportControlledProperties>false</ExportControlledProperties>
</WebPart>
</WpNs0:HelloWorldCode>
注意:<WpNs0:HelloWorldCode runat="server" WebPart="true" __WebPartId="{C 65F 9B11-371E-48B2-BBDF -62020F 3371E5}">
标签中的WpNs0:HelloWorldCode属性是在项目中手工添加的CS类文件的文件名。确保标签的开、关标签名一致:<WpNs0:HelloWorldCode runat="server" WebPart="true" __WebPartId="{C 65F 9B11-371E-48B2-BBDF -62020F 3371E5}">
…………………………………..
………………
</WpNs0:HelloWorldCode>
5、保存文件,打开浏览器,访问SHAREPOINT PORTAL网站的上的ASPX网页,应该能够看到效果了。在本文中,访问的URL为:http://SERVERHOST/test4.aspx。效果如下