• 开发部署带有自定义用户控件的WebPart全过程


    开发部署带有自定义用户控件的WebPart全过程

    说明:在创建此项目前,安装了一系列的插件:

    包括:

    Vs2005 sp1

    VSeWSS.exe  ---(webpart模板)

    OfficeServerSDK.exe

    VSTO+2005+SE.exe

    一、创建用户控件
    在VS2005中,新建一个项目:ASP.net WEB应用程序。起名为:
    MyUserControlTest1,如下图:

     

    自动生成项目:MyUserControlTest1和解决方案MyUserControlTest1。
    在解决方案的资源管理器中,会自动自成一个Default.aspx文件。删除Default.aspx文件。
    在项目MyUserControlTest1中,添加现在项,选择“web 用户控件”,如图:


    用户控件名:MyWebUserControl.ascx。
    在用户控件中添加一个日历控件Calendar1。
    在MyWebUserControl.ascx.cs文件中添加一行后台代码:
     protected void Page_Load(object sender, EventArgs e)
            {
                this.Calendar1.ToolTip = "这是eNet自定义的用户控件(最简单的日历)";
            }
    如下图:


    编译项目。到此,用户控件就开发完了。该用户控件包含的下面的三个文件是在webpart中需要使用的:

    MyWebUserControl.ascx
    MyWebUserControl.ascx.cs
    MyWebUserControl.ascx.designer.cs

    如下图:

     


    二、创建webpart
    1、创建项目:
    在解决方案中添加新项目:
    MyWebPart,如图:


    2、添加用户控件。
    在资料管理器中点击MyWebPart项目,右键,添加现有项,将刚才的用户控件的三个文件全部添加进来。
    说明:用户控件生成的DLL文件不需要引用进来。

    3、修改MyWebPart.cs后台代码:

    在 MyWebPart.cs文件中,添加System.IO的引用。

     private System.Web.UI.Control _innerControl;
    重写:CreateChildControls
    protected override void CreateChildControls()
            {
                using (StreamReader reader = new StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("SampleWebPart.WebUserControl1.ascx")))
                {
                    String resourceContent = reader.ReadToEnd();
                    using (StreamWriter writer = new StreamWriter(this.Page.Server.MapPath("/bin/MyWebUserControl.ascx"), false))
                    {
                        writer.Write(resourceContent);
                    }
                }
                this._innerControl = this.Page.LoadControl("/bin/MyWebUserControl.ascx");
                this.Controls.Add(this._innerControl);
            }
    在Render事件中如下代码:
            protected override void Render(HtmlTextWriter writer)
            {
                this.EnsureChildControls();
                this._innerControl.RenderControl(writer);

            }
    完整的代码如下:

    using System;
    using System.Runtime.InteropServices;
    using System.Web.UI;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Serialization;

    using Microsoft.SharePoint;
    using Microsoft.SharePoint.WebControls;
    using Microsoft.SharePoint.WebPartPages;
    using System.IO;

    namespace MyWebPart
    {
        [Guid("9a7ee2e6-ebff-4594-a3e3-d59aceae4e45")]
        public class MyWebPart : System.Web.UI.WebControls.WebParts.WebPart
        {
            public MyWebPart()
            {
                this.ExportMode = WebPartExportMode.All;
            }

            protected override void Render(HtmlTextWriter writer)
            {
                this.EnsureChildControls();
                this._innerControl.RenderControl(writer);
            }
            private System.Web.UI.Control _innerControl;
            protected override void CreateChildControls()
            {
                using (StreamReader reader = new StreamReader(System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceStream("SampleWebPart.WebUserControl1.ascx")))
                {
                    String resourceContent = reader.ReadToEnd();
                    using (StreamWriter writer = new StreamWriter(this.Page.Server.MapPath("/bin/MyWebUserControl.ascx"), false))
                    {
                        writer.Write(resourceContent);
                    }
                }
                this._innerControl = this.Page.LoadControl("/bin/MyWebUserControl.ascx");
                this.Controls.Add(this._innerControl);
            }
        }
    }


    注意:MyWebUserControl.ascx文件名要和你用户控件的文件名一致。
    看代码可以看出,加载webpart时,会在你所部署的网站的bin目录下自动生成文件:MyWebUserControl.ascx

    4、修改AssemblyInfo.cs文件:

    在项目的AssemblyInfo.cs文件中添加引用:
    using System.Security;
    在最后添加一行:[assembly :AllowPartiallyTrustedCallers()]
    编译,生成MyWebPart.dll文件,到此,webpart开发完毕。

    三、部署webpart
    1、将MyWebPart.dll拷贝到你需要使用该WEB部件的网站的bin目录下。(注意:只需要这一个文件,其它的文件就不需要了)
    2、修改web.config文件:添加一行到safeControl小节。如下:

     <SafeControl Assembly="MyWebPart" Namespace="MyWebPart" TypeName="*" Safe="True" />
        </SafeControls>
    3、不用重启IIS,直接在该网站的“网站设置-修改所有网站设置-Web 部件库”中,选择新建,可以看到刚才部署的webpart了。

    4、选择该webpart,然后点击“导入”按钮,即可。


    四、使用开发的webpart。(略)


     


     

  • 相关阅读:
    Codeforces977D ---Divide by three, multiply by two 深搜+map存出现的数
    HDU4522 湫湫系列故事——过年回家
    2018浙江省赛记录
    POJ3259 :Wormholes(SPFA判负环)
    上海高校金马五校赛 F题:1 + 2 = 3?
    牛客练习赛15A-吉姆的运算式(Python正则表达式瞎搞)
    ZOJ2018/4月月赛G题Traffic Light(广搜)
    luogu 3960 列队
    noip2017
    10.3 模拟赛
  • 原文地址:https://www.cnblogs.com/yigedaizi/p/1496220.html
Copyright © 2020-2023  润新知