【转】用LoadControl的方式来加载Webpart

原文链接:http://blog.sina.com.cn/s/blog_4925e2f901000ati.html

 

有没有办法用codebehind的方式来写webpart呢?
有没有办法直接用.ascx用户控件来直接画页面变成webpart部件呢?
除了用Quickpart还有其它的方法吗?
有.
1.新增一个ascx.
这边我只建一个很简单的usercontrol,命名为WebpartDemo
            (图1)图片如果看不清楚,可以点击它.然后在新的页面中查看
 
注意:在新建该ascx时.请把右下角的"将代码放在单独的文件中"清空.也就是不要在此UserControlCode-Behind文件(.ascx.cs)中写入代码,所以必需的代码直接写入(.ascx)文件中。
 我就简单拉一个button和textbox
 
2.新建一个webpart工程
2.1 在此之前,你可能得从微软网站下载WebPart Templates for VS.NET,并安装。
2.2 新建项目:
   
2.3
如果你机子上不是sps服务器,在此工程的"解决方案资源管理器"处可能会出现这样的画面:
所以我们得重新引用该dll档.
可以从sps服务器上复制Microsoft.SharePoint.dll档下来.然后添加引用此本工程中.
在webpart1.cs中添加如下代码:
  • using System.Web.UI.WebControls;

    using System.Web.UI.HtmlControls;

  • public class WebpartDemo1 : System.Web.UI.WebControls.WebParts.WebPart, INamingContainer

  •  Control _innerUserControl = new Control();
          
            protected override void Render(HtmlTextWriter writer)
            {
                this.EnsureChildControls();
                _innerUserControl.RenderControl(writer);
            }

            protected override void CreateChildControls()
            {
                try
                {
                    _innerUserControl = this.Page.LoadControl("/bin/WebpartDemo.ascx");

                    this.Controls.Add(_innerUserControl);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }

            }

保存编译生成该工程的dll档.

 

此时在我们的项目的bin目录中就有两个文件(.dll,.pdb)

3.把ascx和webpartDemo.pdb和WebpartDemo.dll拷到moss站点的bin目录中
4.修改MOSS站点的web.config
在<saifcontrol>下方添加一句

<SafeControl Assembly="WebpartDemo" Namespace="WebpartDemo" TypeName="*" Safe="True" /> 
  

  

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

修改为   <trust level="Full" originUrl="" />

使MOSS有权限访问bin目录中的ascx.

5.修改网站设定

  • "网站动作/网站设定"

  • 添加部件

"组件库/网页组件"

 

 

 

 

选定后,单击"扩展组件库"保存.

 

6.导入到页面测试

posted on 2008-10-04 01:53  王丹小筑  阅读(409)  评论(0)    收藏  举报

导航