2011-02-02 42 views
1

我只知道兩種使用Visual Studio開發webparts的方法。sharepoint-Webparts-Development

第一個

添加web部件項目,並在適當的方法編寫代碼。

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生命週期的各種事件。

有人能讓我知道你在你的公司採取了什麼方法。

謝謝。

哈日Gillala

回答

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); 
    } 
} 

如果我們的網絡的一部分有任何額外的屬性或toolparts,他們將在這個類進行處理,然後轉發到控制類。我非常喜歡將控件的邏輯與Web部件的邏輯分開。另外,我喜歡能夠控制HTML中控件的佈局或使用Visual Studio設計器。

而這些文件不需要手動部署。然後可以包含在您的解決方案包中。就像您將路徑部署到12 \ TEMPLATE \ FEATURES目錄一樣,您可以將您的ascx文件部署到12 \ TEMPLATE \ CONTROLTEMPLATES。

0

絕對是第二個,只是看在可視的WebParts在2010年(它們是建立完全一樣的)。

0

sp2007,無論哪種方式都很好,這取決於你如何構建控制樹。我更喜歡第一種方法。

sp2010你有更多的選擇。

1)你的第一個選擇應該是一個沙盒裝web部分,它使用了代碼構建方法。 2)如果這個限制太大,你可以嘗試一個可視化Web部件,類似於sp2007中的智能部分。

3)然後是基於標準代碼的方法。