WebPart in un piatto di SharePoint con una spruzzata di WebUserControl

Creare WebPart con un'UI un pò carina è IMHO qualcosa di alquanto complicato.

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.

  1. Installiamo le extensions di cui sopra.
  2. Creiamo un progetto di tipo SharePoint -> WebPart
  3. Create/disegnate il vostro WebUserControl in un progetto di tipo ASP.NET Web Application (per questo esempio utilizzerò un ascx di nome WebUserControl1.ascx)
  4. Prendete il contenuto del file WebUserControl1.ascx.designer.cs e riversatelo all'interno del file WebUserControl1.ascx.cs
  5. Eliminate la keyword partial dalla classe
  6. 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();
        }
    }
     
  7. Copiate il codice di cui sopra e inseritelo all'interno del namespace del file cs creato
    dal progetto SharePoint WebPart del punto 2
  8. 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();
        }
    }
     
  9. Adesso potreste anche cancellare il file WebUserControl1.ascx.cs
  10. Aggiungiamo l'item Root File nel nostro progetto SharePoint WebPart
  11. Sotto la directory RootFiles, create le directory Template\ControlTemplates. Questa sarà la directory SharePoint dove verrà copiato il nostro WebUserControl
  12. 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
  13. 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 è:
    <%@ Control Language="C#" AutoEventWireup="true"
    CodeBehind="WebUserControl1.ascx.cs"
    Inherits="WebApplication1.WebUserControl1" %>
    che dovrà diventare:
    <%@ Control Language="C#" AutoEventWireup="true"
    ClassName="WebUserControl1"
    Inherits="WebPart1.WebUserControl1, WebPart1, Version=1.0.0.0,
    Culture=neutral, PublicKeyToken=<token creato dal progetto SharePoint WebPart>"
    %>
     
    in ClassName specifichiamo la classe del nostro WebUserControl copiato nel punto 7,
    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.

A questo punto potete inserire la WebPart in una pagina e testarla.

 

 Le WebPart vanno testate all'interno di una pagina di SharePoint non nelle WebPart Preview; nella WebPart Preview gli eventi non funzioneranno.

 

posted @ giovedì 23 aprile 2009 15:15

Print

Comments on this entry:

# re: WebPart in un piatto di SharePoint con una spruzzata di WebUserControl

Left by salvatore.difazio@gmail.com at 24/04/2009 00:05
Gravatar
Ciao Massimo,
potresti anche decidere di deployare in un'altra directory, fondamentalmente ho deployiato lì seguendo anche quello che fa microsoft (anche se la motivazione è diversa).

Ho provato le SmartPart e non mi piacciono :-\

# re: WebPart in un piatto di SharePoint con una spruzzata di WebUserControl

Left by salvatore.difazio@gmail.com at 24/04/2009 12:42
Gravatar
Sto vedendo che con le WebPartConnection ci sono alcuni problemi...

# re: WebPart in un piatto di SharePoint con una spruzzata di WebUserControl

Left by jifenoded at 05/09/2018 02:09
Gravatar
The survey helps the restaurant chain to meet the expectations of panda express survey customers and make changes according to their customer’s will.
Comments have been closed on this topic.