开发webpart

基本上要具备开发ASP.net的条件。 
拥有创建用户控件的能力。 

系统条件: 
VS.net 
windows 2003 server 
STSV2 -(sharepoint 2.0) 网上下载 
Web Part Template Library 网上下载 

大概步骤: 
1. 软件安装。(不用我说吧?) 
注意: 
>>>stsv2安装的时候请选择工厂模式(factory model), 
使用mssql数据库;否则会安装msde桌面数据库。 

>>>不要安装frongpage extend,因为在sts中已经有替代组件。 
安装的话,要使用工具卸载,不能只能在添加和删除组件中去除。 
哪个工具,在sts readme文件中有说明。 

>>>装完vs.net后,安装web part模板,如果开发环境是2003+sts, 
则自动找到miscrosoft.sharepoint.dll文件,如果开发环境是xp或2000, 
会提示你输入miscrosoft.sharepoint.dll的目标地址, 
我跳过,在创建webpart的时候,引用了从2003机器上拷来的dll。 
我的开发环境是2000 

2.在vs.net选择开发项目为web part,(装好模板后自动出现)。 
写个hello world,是程序员的本事。 
生成的程序集(assembly)名:testWebPart 
命名空间:testWebPart.first 
类名:helloword 
以上这些也要编写在webpart1.dwp中 


<?xml version="1.0" encoding="utf-8"?> 
<WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" > 
    <Title>WebPart1</Title> 
    <Description>WebPart1.</Description> 
    <Assembly>testWebPart</Assembly> 
    <TypeName>testWebPart.first.helloword</TypeName> 
    <!-- Specify initial values for any additional base class or custom properties here. --> 
</WebPart> 


3.部署。 
将编译的dll拷贝到网站根目录下的bin中去,(bin这个目录默认没有建,自己手工建一个吧。) 
然后编辑根目录下的web.config 
在  <SafeControls> 
加一个 
 <SafeControl Assembly="testWebPart, Version=1.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" Namespace="testWebPart.first" TypeName="*" Safe="True" /> 
告知wss这个webpart是安全的. 
如果不想用强命名则这样: 
 <SafeControl Assembly="testWebPart, Version=1.0.0.0, Culture=neutral,  Namespace="testWebPart.first" TypeName="*" Safe="True" /> 

这里说一下sn.exe工具的使用:

生成新的密钥对并将其写入文件 
sn -k c:\mykeyfile.snk 

在AssemblyInfo.cs文件中的[assembly: AssemblyKeyFile("")] 
改写成为 
[assembly: AssemblyKeyFile("c:\mykeyfile.snk")] 

得到公匙[PublicKeyToken] 
sn -t c:\testWebPart.dll 

4.在sharepoint界面上add WEB part,使用import,上传WebPart1.dwp, 
如果没有问题就可以加入到page页面中去了. 

重要常见问题解答:

1. 
Q:在sharepoint页面上上传XXX.dwp,加入page报: 
not register .... is not safe..... 
A:注意web.config文件的配置,请参考部署 

2. 
Q:我写了无数user control控件,总不能要全部转化成web part才能放到sharepoint上去吧? 
A:当然.不过只用作一点工作. 
实际上,Microsoft.SharePoint.WebPartPages.WebPart 同样具有page.loadcontrol 
这些方法,仍然可以动态的创建用户控件. 
比如: 
我有一个项目文件,生成了customer.web.dll程序集 
同时我想把其中一个userlist.ascx文件放入到sharepoint中去. 

这样操作, 
在webpart中引用customer.web.dll 
把文件拷贝到 
wwwroot\wpresources\mywebpart\customer下 
注意:wwwroot\wpresources是系统自有目录,我创建了mywebpart\customer 

在webpart项目代码中这样写: 


//定义用户控件 
protected customer.web.UserList c_myUserList; 
 
//在RenderWebPart添加如下代码,将子控件输出. 
this.RenderChildren(output); 
 
//重载CreateChildControls方法 
protected override void CreateChildControls() 
        { 
        //实例化对象 
                 c_myUserList = (customer.web.UserList)this.Page.LoadControl("/wpresources/mywebpart/customer/userlist.ascx"); 
        //将控件加入到容器中 
                 this.controls.add(c_myUserList ); 
 
                  
    } 

收工. 


3. 
Q:permission for system.data.sqlcliet assembly ....failed. 
A:这个是wss的web.config文件中的 
 <trustLevel name="WSS_Minimal" policyFile="D:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\config\wss_minimaltrust.config" /> 
wss_minimaltrust.config的问题, 
要进行修改. 
要增加两条代码 
<SecurityClass Name="System.data.sqlclient" Description="System.Security.Policy.ZoneMembershipCondition,System.data.sqlclient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/> 


原文地址:http://www.cnblogs.com/king_astar/archive/2005/02/03/101601.html

posted on 2006-06-16 10:06  hades  阅读(621)  评论(0编辑  收藏  举报

导航