E' interessante, in questi casi e non, utilizzare le WebUserControl.
Purtroppo ancor'oggi con le Visual Studio 2008 extensions for Windows SharePoint Services 3.0, v1.3 - Mar 2009 CTP non è stato creato un progetto che ne supporta direttamente l'utilizzo.
Ma, con un paio di accorgimenti, è possibile utilizzarle.
Vediamo come.- Installiamo le extensions di cui sopra.
-
Creiamo un progetto di tipo SharePoint -> WebPart
- Create/disegnate il vostro WebUserControl in un progetto di tipo ASP.NET Web Application (per questo esempio utilizzerò un ascx di nome WebUserControl1.ascx)
- Prendete il contenuto del file WebUserControl1.ascx.designer.cs e riversatelo all'interno del file WebUserControl1.ascx.cs
- Eliminate la keyword partial dalla classe
-
Quello che otterrete è qualcosa del tipo (io ho inserito una Label e un Button):
public class WebUserControl1 : System.Web.UI.UserControl { protected Label Label1; protected Button Button1; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToString(); } }
-
Copiate il codice di cui sopra e inseritelo all'interno del namespace del file cs creato
dal progetto SharePoint WebPart del punto 2 -
Il risultato sarà il seguente:
[Guid("2f61a277-7142-4d8d-a72c-4dfd83c6cedb")] public class WebPart1 : System.Web.UI.WebControls.WebParts.WebPart { public WebPart1() { } protected override void CreateChildControls() { base.CreateChildControls(); // TODO: add custom rendering code here. // Label label = new Label(); // label.Text = "Hello World"; // this.Controls.Add(label); } } public class WebUserControl1 : System.Web.UI.UserControl { protected Label Label1; protected Button Button1; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { Label1.Text = DateTime.Now.ToString(); } }
- Adesso potreste anche cancellare il file WebUserControl1.ascx.cs
-
Aggiungiamo l'item Root File nel nostro progetto SharePoint WebPart
- Sotto la directory RootFiles, create le directory Template\ControlTemplates. Questa sarà la directory SharePoint dove verrà copiato il nostro WebUserControl
- Copiamo il nostro file WebUserControl1.ascx dall'applicazione ASP.NET Web Application alle directory del punto precedente, in modo da ottenere RootFiles\Template\ControlTemplates\WebUserControl1.ascx e aggiungiamo il file al progetto
-
Adesso dobbiamo modificare il nostro file WebUserControl1.ascx per far puntare i riferimenti al code-behind alla stessa dll della WebPart. In teoria quello che dovreste avere è:
che dovrà diventare:
mentre in Inherits specifichiamo:
Namespace.ClassName, Nome_Assembly, Version, Culture, PublicKeyToken
tutti questi dati lì ho presi da Administrative Tools -> Microsoft .NET Framework 2.0 Configuration
guardando le proprietà della mia dll della WebPart deployata.
Le WebPart vanno testate all'interno di una pagina di SharePoint non nelle WebPart Preview; nella WebPart Preview gli eventi non funzioneranno. |
Tags: SharePoint
No comments:
Post a Comment