24小时学会开发webpart


24小时学会是有前提条件的,
基本上要具备开发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"/>

在wss_minimaltrust.config中加上:

<IPermission class="SqlClientPermission" version="1" Unrestricted="true" />

posted on 2005-02-03 21:14  一望无际的南  阅读(5061)  评论(10编辑  收藏  举报

导航