像编辑User Control一样简单的编辑sharepoint webpart:webpart中添加带代码的user Control

最近在学习sharepoint Web Parts的开发,所使用的环境是WSS3.0,VS.NET2005,所以以前版本的资料很多东西在我的环境下不能执行,搞了好久,终于让我的Web Parts跑起来了,在这里贴上来跟大家分享一下。 
参考并拷贝了部分kane boy bloy的《WalkThrough WebPart 入门指南3》内容。
(http://blog.joycode.com/kaneboy/posts/21140.aspx)

一、创建一个ASP.NET User Control
1.创建一个“ASP.NET Web应用程序”项目,在项目中添加一个名为“WebUserControl1”的用户控件,并放入一个Calendar控件。

2.在User Control的Code-Behind文件(这里是“WebUserControl1.ascx.cs”)中,加入自己想加入的代码。我们的示例中在User Control的Page_Load事件中加入了一行代码,用来设置Calendar控件的ToolTip属性

     public   partial   class  WebUserControl1 : System.Web.UI.UserControl
    
{
        
protected System.Web.UI.WebControls.Calendar Calendar1;
        
protected void Page_Load(object sender, EventArgs e)
        
{
            
this.Calendar1.ToolTip = "Sample Calendar";
        }

    }

 二、创建一个WebPart
1、从微软网站下载Visual Studio 2005 Extensions
http://www.microsoft.com/downloads/details.aspx?FamilyId=19F21E5E-B715-4F0C-B959-8C6DCBDC1057&displaylang=en)安装。
以前的工具是WebPart Templates for VS.NET,并不支持VS.NET2005。

2、在VS.NET中创建一个“Web Part ”,名称为“SampleWebPart”。新建-->project-->Visual C#-->Web Part 。VS.NET会帮我们自动创建一个继承自System.Web.UI.WebControls.WebParts.WebPart(2003中是Microsoft.SharePoint.WebPartPages.WebPart)的WebPart(通常名称为“WebPart1”),并自动重载Render()方法。

3.在项目中通过“添加现有项…”菜单,将第一步中建立的UserControl的2个文件逐个加入到此项目中。

4.打开“WebUserControl1.ascx.cs”文件,将此文件第一行指定的namespace改成和此项目一致的“SampleWebPart”:

namespace  SampleWebPart

5.打开“WebUserControl1.ascx”文件,将第一行的“<%@ Control>”标签中的"CodeBehind”和"AutoEventWireup"属性删除,“Inherits”属性的值改为“SampleWebPart.WebUserControl1”:

<% @ Control Language = " C# "  Inherits  = " SampleWebPart.WebUserControl1 "   %>


6.在“解决方案资源管理器”中选中User Control项“WebUserControl1.ascx”,点击鼠标右键,选择“属性”菜单。在出现的属性窗口中,将“生成操作”属性的值更改为“嵌入的资源”  (埋め込まれたリソース)。


7.在WebPart中载入Resource信息并输出
把以下代码粘贴到SampleWebPart.cs里


namespace  SampleWebPart
{
    [Guid(
"4985ad68-179d-459e-b58a-ecafb8650585")]
    
public class SampleWebPart : System.Web.UI.WebControls.WebParts.WebPart
    
{
        
private System.Web.UI.Control _innerControl;
        
public SampleWebPart()
        
{
            
this.ExportMode = WebPartExportMode.All;
        }


        
protected override void Render(HtmlTextWriter writer)
        
{
            
// TODO: add custom rendering code here.
            
// writer.Write("Output HTML");
            this.EnsureChildControls();
            
this._innerControl.RenderControl(writer);
        }


        
protected override void CreateChildControls()
        
{
            
base.CreateChildControls();
            
//从当前Assembly的Resource中取出指定信息并读到变量resourceContent中。
            using (StreamReader reader = new StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("SampleWebPart.WebUserControl1.ascx")))
            
{
                 
//将resourceContent中的内容写入到一个名为“WebUserControl1.ascx”的文件中。
                String resourceContent = reader.ReadToEnd();
                
using (StreamWriter writer = new StreamWriter(this.Page.Server.MapPath("/bin/WebUserControl1.ascx"), false))
                
{
                    writer.Write(resourceContent);
                }

            }

            
this._innerControl = this.Page.LoadControl("/bin/WebUserControl1.ascx");
            
this.Controls.Add(this._innerControl);
        }

    }

}

三、部署WebPart

因为使用了Visual Studio 2005 Extensions ,与VS.NET2003想比,简化了很多,只需要在属性里面输入一个发布地址再执行(F5),就ok了。只是用到UserControl的代码,所以要把生成的bin/debug文件夹里的dll文件放到当前sps的bin里面,并且设置程序的AssemblyInfo.cs,在头部添加在

using  System.Security


最后添加

[assembly:  AllowPartiallyTrustedCallers()]


因为放在bin下面的dll对于.net来说是不完全可信的,如果dll是放在GAC的就不用加了。并且查看sps的web.config里的trust Level ,至少得是WSS_Medium。

  < trust level = " WSS_Medium "  originUrl = ""   />

具体使用了Visual Studio 2005 Extensions后的发布方法看下面的网站吧,写的很详细
http://www.agilelabs.cn/blogs/%E8%8C%83%E4%BF%8A/archive/2007/03/28/wss3-0-webpart.aspx

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值