Posts
154
Comments
233
Trackbacks
6
Creare web part Ajax Enabled per SharePoint 2007

Al giorno d’oggi un’applicazione web che si rispetti non può più fare a meno di Ajax. Anche su SharePoint vale la stessa cosa e andando a sviluppare web part è quasi “d'obbligo” utilizzare un qualche framework Ajax. Volendo utilizzare le Ajax Extension di Microsoft e volendo anche utilizzare il nuovo Framework 3.5 è necessario compiere alcuni piccoli passi.
La prima cosa da fare è modificare il web.config di SharePoint affinchè includa tutte le entry necessarie a supportare il Framework .NET 3.5. E’ possibile editare a mano il web.config di SharePoint e riportare tutte le modifiche, ma esiste anche un metodo più rapido descritto in questo post. Qui i punti salienti:

  1. Da Visual Studio 2008 creare un progetto web temporaneo;
  2. Selezionare come target il Framework 2.0;
  3. Copiare il web.config di SharePoint nel nuovo progetto;
  4. Cambiare il target del progetto selezionado il Framework 3.5;
  5. Copiare il web.config modificato nella virtual directory di SharePoint.

Fatto questo il nostro web.config avrà tutto il necessario per supportare LINQ, le Ajax Extensions, e compagnia varia.
A questo punto potremo creare le nostre web part Ajax-Enabled. L’unica accortezza è quella di verificare che nella pagina ci sia sempre uno ScriptManager. Volendo è possibile modificare direttamente la master page, ma in caso di redistribuzione della nostra web part potrebbe essere scomodo.

Possiamo però verificare da codice la presenza dello script manager e nel caso non fosse presente possiamo andare ad aggiungerlo in automatico:

   1: protected override void OnInit(EventArgs e)
   2: {
   3:   base.OnInit(e);
   4:   try
   5:   {
   6:     // Verifico se lo script manager è già presente
   7:     ScriptManager scriptManager = ScriptManager.GetCurrent(this.Page);
   8:     if (scriptManager == null)
   9:     {
  10:       scriptManager = new ScriptManager();
  11:       scriptManager.ID = "ScriptManager1";
  12:       scriptManager.EnablePartialRendering = true;
  13:       // Aggiungo lo script manager alla pagina
  14:       this.Page.Form.Controls.AddAt(0, scriptManager);
  15:     }
  16:   }
  17:   catch (Exception ex)
  18:   {
  19:     error = ex.ToString();
  20:   }
  21: }

Per finire nel caso ci fossero problemi di postback con gli update panel, questo KB della Microsoft mostra il work-around da utilizzare.
Alla prossima!

posted on lunedì 3 novembre 2008 10.21 Print
Comments
Gravatar
# re: Creare web part Ajax Enabled per SharePoint 2007
Massimo Prota
03/11/2008 13.26
  
Ciao Alessandro,
va bene questo metodo lazy, ma per sviluppo; se parliamo di deploy può portare qualche problema e l'importante è saperlo prima del giorno del deploy :)
- Non bisognerebbe modificare i web.config a mano, ma sempre tramite features che si possono molto più comodamente deployare, aggiornare, ritrarre in particolar modo se abbiamo un ambiente farm composto da più servers dove anche andare mantenere allineati i web.config può essere difficoltoso
- Poniamo che sviluppi un custom fields che fa uso di AJAX; lo scope di esso è necessariamente farm wide e non si può fare altrimenti. Tu modifichi il web.config _della tua applicazione_, senza preoccuparti delle altre eventualmente presenti nella farm. Risultato la tua web app saprà riconoscere ajax:UpdatePanel specificato nel ascx del custom field, tutte le altre invece no, riempiendo di errori l'event log dei server.

Quindi il lazy non va tanto bene, o comunque non è serio.
Bisogna quindi tradurre in codice e features tutte le operazioni manuali, usando la classe SPWebConfigModifications in questo caso. Un buon esempio e una feature che fa il mestiere AJAX è AJAX.Config: http://www.codeplex.com/features/
Gravatar
# re: Creare web part Ajax Enabled per SharePoint 2007
asorcinelli@hotmail.it
03/11/2008 14.04
  
Beh si,
è corretto quello che dici. Sono fondamentalmente d'accordo e sono d'accordo che quando si fa il deploy ci vuole una feature.

Però è anche vero che in molte situazioni (sviluppo, test, installazioni mono-macchina) può essere cmq un metodo rapido e "indolore".
Chiaramente non mi sognerei mai di fare il deploy di una mia soluzione in questo modo, anche perchè non tutti i clienti hanno Visual Studio 2008 :)

Post Comment

Title *
Name *
Email
Url
Comment *  
Please add 8 and 4 and type the answer here:
News
Se volete sapere con chi avete a che fare eccomi qui in uno "scatto" lavorativo.
La mia foto

Logo MCAD
Logo MCTS

Visite dal 16/03/2007:

Il mio stato su Messanger: