.NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering...

55
.NET Development su .NET Development su tecnologia SharePoint tecnologia SharePoint Parte 2 Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi Paolo Pialorsi [email protected] [email protected] DevLeap DevLeap http:// http:// www.devleap.com/ www.devleap.com/ Roberto Brunetti Roberto Brunetti [email protected] [email protected] DevLeap DevLeap http:// http:// www.devleap.com/ www.devleap.com/

Transcript of .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering...

Page 1: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

.NET Development su .NET Development su tecnologia SharePoint tecnologia SharePoint Parte 2Parte 2

ASP.NET Web Part, Master Page, Data Rendering

Paolo PialorsiPaolo [email protected]@devleap.it

DevLeapDevLeaphttp://www.devleap.com/http://www.devleap.com/

Roberto BrunettiRoberto [email protected]@devleap.it

DevLeapDevLeaphttp://www.devleap.com/http://www.devleap.com/

Page 2: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

ASP.NET IntegrationASP.NET IntegrationSP v3 <-> ASP.NET 2.0

Maggiore integrazione

Ci sono ancora alcune differenze

SharePoint haModello basato su template

Un utente può editare le pagine

ASP.NET 2.0ASP.NET 2.0

Windows Windows SharePoint SharePoint Services Services

“v3”“v3”

Windows Windows SharePoint SharePoint Services Services

“v2”“v2”

ASP.NET 1.1ASP.NET 1.1

Page 3: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

SharePoint per sviluppatori SharePoint per sviluppatori ASP.NETASP.NET

Differenze nel modello di securityI Knowledge Worker possono editare le pagine

Molti siti, basati su Template

No-Code pageNo-Code Behind pageSafeControls

Template Template ASPX PagesASPX Pages

_layouts _layouts Application Application ASPX PagesASPX Pages

Customized Customized ASPX Pages ASPX Pages

Web Front Web Front EndEnd

Content Content DatabaseDatabase

Page 4: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

IntegrazioneIntegrazioneIIS -> ASP.NET

AutenticazioneWindows AuthenticationForms Authentication

Membership

Per entrambi Role Manager

Web Parts

Master Page

Page 5: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Web PartsWeb Parts

Digital Dashboard del 99in chiave .NET

Page 6: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

ObiettivoObiettivo

Per l’utenteUI flessibileContenuto personalizzato

Per lo sviluppatoreTon di pre-written code

Personalizzazione di UI

Customizzazione semplice

Contenuto complesso

Plumbing già creato !

Page 7: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

ASP.NET Web PartsASP.NET Web PartsBuilding Block per siti dinamiciUtilizzabile in qualunque web app

Portal, contenuti, intranet, internet Supporto Windows e Form Authentication

Integrazione con ASP.NET ControlOgni controllo può essere una Web PartConnessioni semplici e potenti

Flessibile e estendibileSupporto per servizi ASP.NET

Personalization, Role Management, Membership, Profile.. ecc

Visual Studio Designer Full !

Page 8: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Giro sul sitoGiro sul sito

DLASPNET20/WebParts

Page 9: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Display ModeDisplay Mode

BrowseDesignDesign

EditEditCatalogCatalog

ConnectionConnection

Page 10: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Il Cervello: Web Part Il Cervello: Web Part ManagerManager

Non-visual<ASP:WebPartManager runat=server ... />

Traccia lo stato della paginaBrowse, Catalog, Connect, Design, Edit

Gestisce le Zone e i ControlliTraccia le Part in ogni Zone

Gestisce le Web PartAdd, Close, Delete, Move

Gestisce le comunicazioni fra controlli

Obbligatorio !

Page 11: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

WebPartZoneWebPartZone

Gestore di layout per server controlSezione/Porzione UI

Una Zone può contenere più controlli

Rendering di elementi UIBorder, Title, Verbs

Una pagina può contenere più ZoneUna Zone è legata al WebPartDisplayMode

Edit visualizza EditorZone

Catalog visualizza CatalogZone

Connection visualizza ConnectionZone

WebPartZone sempre visualizzato

Page 12: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Zone LayoutZone Layout

WebPartZoneWebPartZone

EditorZoneEditorZone

Page 13: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Zone LayoutZone Layout

DLASPNET20/WebParts

Page 14: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

PartPart

Qualunque server side control o user control si comporta come Web Part

System.Web.UI.WebControls.WebPartClasse baseDefinisce come l’utente interagisce con la Web PartCustom verbsSettaggi per titolo e Catalog

Built-in Control per le funzionalità in una zona

Page 15: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Part: ContentPart: ContentWeb Part ControlWeb Part Control

LayO

utE

dit

orP

art

LayO

utE

dit

orP

art

AppearanceEditorPartAppearanceEditorPartUser ControlUser Control

Litera

lLite

ral

Page 16: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

UI ElementUI Element

VerbElementi che consentono azioniWebPartZone fornisce

Close, Minimize, Restore, Help, Edit, Connect, Export

Custom Verb derivando WebPart

TitleTitle VerbsVerbs

Chrome

Chrome

ContentContent

TitleIconTitleIcon

Page 17: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Costruire una vera Web Costruire una vera Web PartPartDerivare da

System.Web.UI.WebControls.WebPartSystem.Web.UI.Control

O qualunque derivata

Aggiungere membri

Override ChildControlCreated/Render

Aggiungere a una Zone

Non usare ViewStateUsa Personalization in auto dietro le quinte

Page 18: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

WebPart Base ClassWebPart Base ClassPiù controllo su tutto rispetto alle interfacce. Si può

Gestire Interazione con l’utenteAllowClose, AllowExport, AllowMinimize..etc

Aggiunta di custom verbIcona per titolo e CatalogoHelp mode e Help URLError Message per l’importazione

Container ControlDeriva da <asp:Panel>Può includere text, markup, e server side controlLavora anche fuori dalle WebPart !!!

Page 19: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

PrevisioniWebPart.csPrevisioniWebPart.csDeriva da WebPartDefinisce proprietà Custom ZipCode

WebBrowsable

Personalizabile

WebDisplayNameSi vede anche nel Designer di VS 2005

WebDescriptionToolTip siulla riga

Per usarlo si registra come sempreProprietà esposta accessibile nel Designer di VS 2005

Page 20: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

TextDisplayWebPart.csTextDisplayWebPart.cs

Tolgo il verbo Close e MinimizeIn Get proprietà AllowClose/Minimize

Override di RenderContentCrea Label

Aggiunge Label

Aggiunta di Verb “Save”Override Verbs

Per usarlo si registra come sempre

In DesignMode provare Verb

Page 21: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

CatalogModeCatalogModeExport/Import

ExportMode=“All” in Default.aspxSu WebPart “vere”

Serve anche web.config <webParts enableExport=“true”>

Es su PrevisioniWebPart

Da codice ExportMode=WebPartExportMode.All

Page 22: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

SharePoint Web PartSharePoint Web Part

Page 23: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Tipi di SharePoint Web Tipi di SharePoint Web PartPartASP.NET Web Part

Microsoft.Web.UI.WebControls.WebParts.WebPart

WSS Web PartMicrosoft.SharePoint.WebPartPages.WebPart

Client Connection, Caching, Work Item

Usano XML Serialization

Hybrid Web Part (v2)Microsoft.SharePoint.WebPartPages.WebPart

Utilizzate per la migrazione

Usano ASP.NET Serialization

Page 24: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Limitazioni sulla Limitazioni sulla integrazioneintegrazioneSi possono usare le Web Part

ASP.NET 2.0Ma non le pagine contenenti Web Part

Occorre usare SPWebPartZones e SPWebPartManager

Non esiste supporto built-in .ASCX (user controls) come Web Parts

Si possono usare .ASCX nelle pagineSi possono creare però Wrapper per ASCX

Forse nella versione finale

Page 25: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Creare una Web PartCreare una Web Part

[DefaultProperty(“ImageLink"), ToolboxData("<{0}:DemoWP runat=server></{0}:DemoWP>")][XmlRoot(Namespace="FirstSimpleWebPart")]public class DemoWP: Microsoft.SharePoint.WebPartPages.WebPart{

[WebPartStorage(Storage.Shared), Resources("ImageLinkLiteral", "Advanced", "ImageLink"), XmlElement("ImageLink", IsNullable=false)]public string ImageLink { get; set; }

}

C#

Page 26: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

L’albero genealogicoL’albero genealogico

Page 27: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Creare una WebPartCreare una WebPart

Page 28: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Definire i controlli childDefinire i controlli childI controlli child possono essere definiti come membri privati/protected nel codice della classe, come nei WebControl

Ridefinire CreateChildControls per configurarli e aggiungerli (Controls.Add) al controllo

Il loro rendering sarà gestito dal metodoprotected void RenderWebPart(HtmlTextWriter output);

che internamente richiama RenderChildren

La gestione degli eventi e del postback passa attraverso il motore di Sharepoint che fa da host delle nostre Web Part

Page 29: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Strong Name e GUIDStrong Name e GUID

sn –k NomeChiave.snk

[assembly: AssemblyVersion("1.0.0.1")]

[assembly: AssemblyKeyFile(“keyfile.snk")]

[Guid("12F8AFE7-3E99-4fd1-B6AC-C5F36F6E6B06")]

Page 30: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Deployment manuale Deployment manuale (development)(development)

Se siamo in development possiamoProject Output: .\bin\ del web site

Copiare file DWP nella BIN

Definire nel web.config del web site l’assembly come SafeControl

<?xml version="1.0" encoding="utf-8"?><WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" >

<Title>First Simple Web Part</Title><Description>This is a first simple Web Part.</Description><Assembly>FirstSimpleWebPart, Version=1.0.0.1, Culture=neutral,

PublicKeyToken=684a1baf4f6ac767</Assembly><TypeName>FirstSimpleWebPart.FirstWP</TypeName>

</WebPart>

XML

<SafeControl Assembly="FirstSimpleWebPart, Version=1.0.0.1, Culture=neutral, PublicKeyToken=684a1baf4f6ac767" Namespace="FirstSimpleWebPart"

TypeName="*" Safe="True" />

XML

Page 31: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Deployment via .CABDeployment via .CABCreare un file .CAB

Da VS.NET creare un progetto del gruppo “Setup and Deployment” di tipo “Cab Project”

Inserire nel fileAssembly.DLLManifest.XMLRisorseWebPart.DWP

Cioè scegliere dal progetto della Web PartPrimary OutputContent Files

Usare STSADM.EXE per il deployment (vedi poi...)

Page 32: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

STSADM.EXE –o *wppackSTSADM.EXE –o *wppackSTSADM.EXE è il tool a riga di comando per la gestione di WSSI comandi relativi alle Web Part sono:

addwppack –f file.cabAggiunge un nuovo Web Part Package (CAB)

deletewppack –name file.cabRimuove un Web Part Package

enumwppacksElenca i Web Part Package installati

Per esempio per installare un WPPack:STSADM.EXE –o addwppack –f file.cab –url http://site/

Page 33: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Web Part deploymentWeb Part deployment

Page 34: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

SicurezzaSicurezzaA partire da ASP.NET 1.1 è possibile sfruttare livelli di trust personalizzatiWSS definisce dei custom Permission

SharePointPermission (ObjectModel, UnsafeSaveOnGet , Unrestricted)WebPartPermission (Connections, Unrestricted)

I livelli di trust di ASP.NET sonoFullHighMediumLowMinimal

WSS definisce ancheWSS_MinimalWSS_Medium

Page 35: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

ConseguenzeConseguenzeA volte le Web Part e le estensioni non sono autorizzate a funzionare

SecurityException: SharePointPermission

Conviene gestire l’errore e/o ricordarsi di configurare correttamente il livello di Trust

Per esempio con WSS_Minimal una Web Part non può utilizzare il Managed Object Model

Serve almeno WSS_Medium

Page 36: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Master PageMaster Page

Page 37: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Master PageMaster PageDefiniscono Layout

E volendo comportamento

Le pagina puntano alla Master Page Master Page definisce “Placeholder” dove le pagine vanno a “scrivere”

Master Page “Chrome” (default.master)Master Page “Chrome” (default.master)

Content Page Content Page (default.aspx)(default.aspx)

Page 38: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Master Master Pages Pages PlaceholderPlaceholder

Page 39: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

ASP.NET 2.0 Master PageASP.NET 2.0 Master PagePossono essere nidificate

MasterMaster di Sezione 1

Pagine sezione 1

Master di Sezione 2Pagine sezione 2

Possono usare Property OverrideMeccanismo nativo dei controlli di ASP.NET 2.0 per modificare il valore di una proprietà in base al browser che effettua la richiestaEs. Se FireFox -> Master = “Color.master”

Se Pocket IE -> Master = “Little.master”

Page 40: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Master Pages In WSSMaster Pages In WSSOgni pagina punta a una Master PageOgni Site WSS ha una MPG (Gallery)I metadati del Site indicano dove vercare le Master Page

Le Content Page per default usano la MPG del SiteLe Application Page per default la directory _layout

Site metadata indicates where WSS looks for a master page

Page 41: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Master Page TokenMaster Page TokenDue token dinamici

~masterurl/default.masterPunta a spweb.MasterUrl

~masterurl/custom.masterPunta a spweb.CustomMasterUrl

Due token statici~sitecollection/default.master~site/default.master

Page 42: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

SharePoint Page LayoutSharePoint Page Layout

default.aspx

spweb.MasterUspweb.MasterUrlrl

.aspx .master

Content Pages - http://myserver/

/ /_catalogs/masterpage/allitems.aspx

.aspx

/shared documents/

create.aspx

.aspx

/_layouts/

Application Pages

.master

/_layouts/

application.master

File System - \.. \web server extensions\12\

default.aspxSiteTemplates\STS Global\

viewpage.aspx

Pages\

default.master

“ghosting”

default.master

Page 43: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Master Page customMaster Page custom

Page 44: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Extensibility PointExtensibility Point

Page 45: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

CosaCosaToolbars, Menu, Pagine “Settings”

Link alle pagineUsare controlli ASP.NETsulle toolbarAssociate

List type

Content type

File Type

Page 46: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Content Type SettingsContent Type Settings

Site SettingsSite Settings

Central AdminCentral Admin

Page 47: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Display Form ToolBarDisplay Form ToolBar

View View ToolBarToolBar

Welcome Welcome MenuMenu

Site ActionsSite Actions

““ECB”ECB”

Page 48: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Visual Studio ExtensionsVisual Studio Extensionsfor Sharepointfor Sharepoint

Page 49: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

““Visual Studio Extensions”Visual Studio Extensions”

Supporto operativo a chi sviluppa soluzioni per SharePointAggiunge dei template a VS2005

VS Project, Item Templates

Build, Deploy, Debug

WSS XSD con XML intellisense

Forse ci sarà anche un tool per esportare i contenuti dei site da un ContentDB (devDB) ad un altro (productionDB)

Page 50: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Servirà per creareServirà per creare

Web Part

Site Definition

List Definition

Feature Definition

Event Handler

Workflow Activity

Page 51: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

MobilityMobility

Page 52: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Mobile Page ArchitectureMobile Page Architecture

default.aspx

mbllists.aspx

bloghome.aspx

view.aspx dispform.aspx

editform.aspx

newform.aspx

newpost.aspx disppost.aspx

viewcomment.aspx

newcomment.aspx

delete.aspx

Team Site Mobile Pages

Blog Site Mobile Pages

Redirect

http://mysitename/m http://mysitename/_layouts/mobile/default.aspx

Usa ASP.NET Property OverrideCambia Home Page

Con redirect

In base al template

Personalizzabile daWeb Template Type

List Template Type

Field Type

Page 53: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Ulteriori Ulteriori approfondimenti…approfondimenti…

http://www.microsoft.com/italy/msdn/

http://msdn.microsoft.com/office/future/

http://www.netfx3.com/

http://wf.netfx3.com/

http://www.devleap.it/

Page 54: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

Grazie!Grazie!Domande?

Compilate il form di valutazione…

Page 55: .NET Development su tecnologia SharePoint Parte 2 ASP.NET Web Part, Master Page, Data Rendering Paolo Pialorsi paolo@devleap.itDevLeap

© 2006 Microsoft Corporation. All rights reserved.This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.