现在的位置: 首页 > 综合 > 正文

24小时学会开发webpart

2013年01月11日 ⁄ 综合 ⁄ 共 3080字 ⁄ 字号 评论关闭


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" />

抱歉!评论已关闭.