随笔-8  评论-49  文章-0  trackbacks-29

   在MOSS 2007中有几种Webpart的部署方式:

   1 使用Asp.net 2.0的Webpart,声明SafeContorl之后上载到Sharepoint的Webpart gallery中,MSDN上的Walkthrough: Creating a Basic Web Part 有详细介绍.

   2 使用SharePoint的Webpart,装一个VS Extensions for SharePoint之后有一个项目类型叫做webpart,写一个webpart,然后F5,就会把webpart部署到你的SharePoint的站点中.实际上也是部署了一个Feature. 其原理MSDN上也有介绍:Walkthrough: Creating a Basic SharePoint Web Part 

   3 kaneboy在他的blog中提到过使用Feature的部署DelegateContorl的方式部署一个ascx文件到站点集的Feature

 

   以上三种方式各有优缺点,前两种方式采用纯粹的Webpart的形式,开发起来很麻烦,特别是一些丰富的用户界面会变得很麻烦。第三种方式虽然解决了前两种方式的不足,但是没有Code-behind,做企业级开发把code写在ascx文件中实在有点不合适,而且使用Feature部署以后管理起来不是很方便。那么今天我就来Demo一种使用Code-behind用户控件作为WebPart的方式,而且将部署的UserContorl便于管理。

   这里使用一个工具叫SmartPart,这个工具在WSS 2.0时代就有,现在又针对与WSS 3.0的版本。下载回来一个msi安装包,不知道为什么我在两个VPC上安装都没有成功,解压缩到临时目录下之后就没反映了。没办法,一些还得自己动手丰衣足食阿。在临时目录下有一个Cab文件,把这个文件打开之后研究一下,大概明白了安装的步骤。

  Step(1): 将SmartPart.dll部署到GAC.

  Step(2):新建一个Web Project,在里面开发你的用户控件,Demo的用户控件叫UCPart.ascx。
  前台代码:

 

<%@ Control Language="C#" CodeFile="UCPart.ascx.cs" Inherits="DemoWebPart.UCPart" CompilationMode="Always" %>
<asp:TextBox ID="txbDate" runat="server"></asp:TextBox>


  后台代码:

 

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

namespace DemoWebPart
{
    
public partial class UCPart : System.Web.UI.UserControl
    
{
        
protected void Page_Load(object sender, EventArgs e)
        
{
            
this.txbDate.Text = DateTime.Now.ToShortDateString();
        }

    }

}


  功能很简单,就是在后台代码中为一个textbox赋一个值。编译一下通过之后,把这个用户控件连同其后台代码文件copy到<%IIS Root Dir%>\wss\VirtualDirectories\xxxx\UserContorls下。

  其中<%IIS Root Dir%>为IIS的根目录,xxxx为当前Web Application的端口号。如果你第一次做这个操作,是需要手工建立一个UserContorls文件夹的。

  同时更改<%IIS Root Dir%>\wss\VirtualDirectories\xxxx\Web.Config.声明SaftContorl.

 

<SafeControl Assembly="SmartPart, Version=1.1.0.0, Culture=neutral, PublicKeyToken=dd064a5b12b5277a" Namespace="SmartPart" TypeName="*" />

 

  Step(3): 把SmartPart的临时目录下的两个dwp上载到站点的Web Part Gallery中。

 

  Step(4): 随便找个页面在设计模式下添加WebPart,会发现刚刚添加的两个WebPart.

 

   选择添加SmartPart List之后,在WebPart的属性中就可以选择到你刚刚放到UserContorls下面的UserContorl。

  添加到页面上看一下,哦.....测试通过...

 

 

  关于另外一个SmartPart的用法类似,只不过不是列表选择的形式,可以任意UserContorl的定义路径。

  使用这种部署Webpart的方式的好处有两个:

  1、支持Code-behind.

  2、便于管理已经部署的UserContorl.

posted on 2006-12-10 03:18 King Lau 阅读(2725) 评论(17)  编辑 收藏 网摘 所属分类: MOSS

评论:
#1楼 2006-12-13 16:57 | Nick-pccai      
用户控件连同其后台代码文件?编译后的DLL直接COPY到BIN路径下行不?
  回复  引用  查看    
#2楼 2006-12-13 17:22 | 无限[未注册用户]
大哥你好,请问MOSS 2007中文版那里可以下到.谢谢!!!
  回复  引用    
#3楼[楼主] 2006-12-14 12:43 | King Lau      
@Nick-pccai

no dll. just ascx & ascx.cs

  回复  引用  查看    
#4楼 2006-12-14 13:37 | Nick-pccai      
@King Lau
我知道你的意思,但是部署不方便塞,能把*.CS编译成DLL部署吗?

  回复  引用  查看    
#5楼 2007-01-07 15:37 | Hooyke[未注册用户]
Step(1): 将SmartPart.dll部署到GAC.

请教?什么是GAC ?

  回复  引用    
#6楼 2007-01-07 16:39 | Hooyke[未注册用户]
添加出现错误提示:
Could not open user control path: System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\Inetpub\wwwroot\wss\VirtualDirectories\80\UserControls'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption) at System.IO.Directory.GetFiles(String path) at SmartPart.UserControlToolpart.RenderToolPart(HtmlTextWriter output)

请问这是什么原因造成的?

  回复  引用    
#7楼 2007-01-07 18:18 | kevin[匿名][未注册用户]
我们往往在webconfig中定义一个数据库路径。请问部署到sps上时。这个webconfig和数据库路径要如何设置。。。
谢谢各位学长。

  回复  引用    
#8楼 2007-01-08 10:44 | Hooyke[未注册用户]
Step(1): 将SmartPart.dll部署到GAC.
请教如何部署?

  回复  引用    
#9楼 2007-01-09 13:10 | bingochuan[匿名][未注册用户]
@Hooyke
用资源管理器打开C:\WINDOWS\assembly,然后把dll拉进去,就注册到GAC(全局程序集缓存)了

  回复  引用    
#10楼 2007-01-11 09:37 | Hooyke[未注册用户]
bingochuan[匿名] 多谢

可是这个目录是无法拷贝进入的 ,只有通过 .net framework 2.0 配置工具 在高级工具 Administrative Tools 里面可以添加 。

  回复  引用    
#11楼 2007-01-16 10:36 | hooyke[未注册用户]
用kaneboy 的QuickPart吧,那个简单方便多了.
  回复  引用    
#12楼 2007-02-07 09:38 | 忠爱一生[未注册用户]
# re: MOSS 2007 入门(6) : 使用一个Code-behind的用户控件作为WebPart 2007-01-07 16:39 | Hooyke

添加出现错误提示:
Could not open user control path: System.IO.DirectoryNotFoundException: Could not find a part of the path 'D:\Inetpub\wwwroot\wss\VirtualDirectories\80\UserControls'. at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) at System.IO.Directory.InternalGetFileDirectoryNames(String path, String userPathOriginal, String searchPattern, Boolean includeFiles, Boolean includeDirs, SearchOption searchOption) at System.IO.Directory.GetFiles(String path, String searchPattern, SearchOption searchOption) at System.IO.Directory.GetFiles(String path) at SmartPart.UserControlToolpart.RenderToolPart(HtmlTextWriter output)

请问这是什么原因造成的?

--请教楼主

  回复  引用    
#13楼 2007-04-18 14:22 | Silvia_King[未注册用户]
so excited that I can find info so classical, thanks for your share
  回复  引用    
#14楼 2007-05-24 16:03 | xmchyabi[未注册用户]
QQ群:10894367

SPS MOSS 2007学习交流群..欢迎各位朋友来加入..

  回复  引用    
#15楼 2007-06-21 17:26 | xmchyabi[未注册用户]
也可以用在新建一个webpart.cs
然后loadcontrol进来一个用户控件

其部署方式也简单

  回复  引用    
#16楼 2009-03-04 14:48 | 誰最擅改劇情
请问如何实现上传大附件呢?比如视频文件一类
  回复  引用    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 587745




相关文章:

相关链接: