sharepoint-Web Parts-Development

时间:2011-02-02 11:51:34

标签: sharepoint-2007

我只知道使用Visual Studio开发webpart的两种方法。

第一个

添加一个webpart项目并用适当的方法编写代码。

protected override void OnInit(EventArgs e)
protected override void OnLoad(EventArgs e)
protected override void CreateChildControls()
protected override void LoadViewState(object savedState) //Only at Postback
protected override void OnPreRender(EventArgs e)
protected override void Render(System.Web.UI.HtmlTextWriter writer)
protected override void OnUnload(EventArgs e)
public override void Dispose()

直接从VS部署解决方案。获取WSP文件并使用STSADM.EXE在站点/服务器场中进行部署。这是要遵循的标准方法。

第二种方法:

创建用户控件并将Usercontrol.ascx和Usercontrol.ascx.cs复制到_Layouts。

创建一个新的webpart项目并使用

注册该控件
_UserControl = this.Page.LoadControl("\\_layouts\\_UserControl.ascx");

从VS部署它。

但是这种方法看起来并不安全,因为我们手动复制到_layouts。

我们采用这种方法的唯一原因是我们可以按照我们想要的方式显示控件,而不用担心看到webpart生命周期的各种事件。

有人能让我知道你在公司采取的方法。

谢谢。

Hari Gillala

3 个答案:

答案 0 :(得分:1)

当我开始在SharePoint 2007中开发时,我们使用了您描述的第一种方法。过了一段时间,我们改用了第二种方法。

但是,我们不是将ascx文件放入布局中,而是将它们放在controltemplates下的自定义目录中。我们的网页部件代码如下所示:

public class OurControlWebPart : WebPart 
{
    protected override void CreateChildControls()
    {
        base.CreateChildControls();
        Control userControl = 
            Page.LoadControl("~/_controltemplates/OurProject/OurControl.ascx");
        Controls.Add(userControl);
    }
}

如果我们的Web部件有任何其他属性或工具部件,它们将在此类中处理,然后转发到控件类。我真的很喜欢将控件的逻辑与Web部件的逻辑分开。此外,我喜欢能够在HTML中控制控件的布局或使用Visual Studio设计器。

这些文件不需要手动部署。然后可以包含在您的解决方案包中。就像您将路径部署到12 \ TEMPLATE \ FEATURES目录一样,您可以将ascx文件部署到12 \ TEMPLATE \ CONTROLTEMPLATES。

答案 1 :(得分:0)

绝对是第二个,只看2010年的视觉网页部分(它们的构建完全相同)。

答案 2 :(得分:0)

sp2007,无论哪种方式都很好,它只取决于你喜欢如何构建你的控制树。我更喜欢第一种方法。

sp2010你还有几个选择。

1)您的第一选择应该是沙盒网页部件,它使用代码构建方法。

2)如果限制太多,您可以尝试使用可视化Web部件,类似于sp2007中的智能部件。

3)然后是基于标准代码的方法。