L'esempio riportato, per SharePoint 2007 (WSS3 - MOSS), permette di aggiungere dinamicamente da codice C#, una web part di tipo ListView.

Il vantaggio di questo approccio e di poter specificare anche il sito su cui risiede la lista, cosa non possibile da interfaccia utente. In ogni caso è sempre possibile editarla successivamente, da interfaccia utente di SharePoint, ovviamente rimane collegata la sito definito nel codice.

Presta attenzione a due cose:
il parametro ListName della ListViewWebPart (ma in generale di tutte le Web Part) non è il nome o il titolo della lista ma il suo Guid (list.ID)
il Guid della lista (parametro ListName) va passato in formato stringa con

listWP.ID.ToString("B").ToUpper()

omettendo il metodo ToString("B") o il metodo metodo ToUpper() si genera un Exception con messaggio Value does not fall within the expected range.

C#

using System;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebPartPages;

class SgartAddWebPart
{
  static void Main(string[] args)
  {
    using (SPSite site = new SPSite("http://localhost"))
    {
      //il sito dove mettere la web part
      using (SPWeb web = site.OpenWeb("/altrosito"))
      {
        //dove prendere la lista
        SPWeb webWP = site.OpenWeb("/");
        SPList listWP = webWP.Lists["Contacts"];
        SPView viewWP = listWP.DefaultView;

        //prendiamo un riferimento alla pagina che continene le web part
        SPLimitedWebPartManager wpm =
        web.GetLimitedWebPartManager(
            "Default.aspx"
            , System.Web.UI.WebControls.WebParts.PersonalizationScope.Shared 
        );

        //creaiamo la web part di tipo list view 
        ListViewWebPart wp = new ListViewWebPart();
        // .ToString("B").ToUpper(); è indispensabile altrimeni da errore
        wp.ListName = listWP.ID.ToString("B").ToUpper();
        wp.ViewGuid = listWP.DefaultView.ID.ToString("B"); //.ToUpper();
        wp.WebId = webWP.ID;
        wp.Title = string.Format("Web: {0} - List: {1}"
          , webWP.Url, listWP.Title);

        //aggiungiamola alla pagina
        wpm.AddWebPart(wp, "Right", 0);

        //ricordiamoci sempre di fare pulizia
        webWP.Dispose();
      }
    }
  }
}
Tags:
SharePoint498 SharePoint 2007218
Potrebbe interessarti anche: