Creating Web Parts With Connections Scott Ruble

Post on 18-Jan-2015

834 views 0 download

Tags:

description

 

Transcript of Creating Web Parts With Connections Scott Ruble

Creating Web Parts with Connections

Agenda• Previous Technology• Web Part Connections Concept• Connection Framework• Scenarios• Connecting Parts Demo• Supported Interfaces• Interface Details• Compatibility• Cross Page Connections• Connectable Microsoft Web Parts• Code Flow• Code Walk Through Demo/Lab

Previous Technology

• Hardwired solutions• Parts need intimate knowledge of each

other– DDSC.RegisterForEvent, DDSC.RaiseEvent – Parameterized Hyperlinks

• Lack of flexibility• Developer-driven

Web Part ConnectionsConcept

Connections Framework

• Allows Web Parts to send & receive basic types of data; e.g., Cell, Row, List, etc.

• Uses standardized set of interfaces• Allows completely independent parts

to connect• Enables end users to form connections

– Browser– FrontPage

Scenarios

• Master/Detail• Parent/Child• Data Entry and Filter• Calculations• Alternate Views• Data Enhancement

ScenariosMaster Detail

ScenariosParent/Child

ScenariosData Entry and Filtering

ScenariosCalculations

ScenariosAlternate Views

ScenariosData Enhancement

Connecting Parts

Supported Interfaces

• ICellProvider, ICellConsumer • IRowProvider, IRowConsumer • IListProvider, IListConsumer • IFilterProvider, IFilterConsumer

• IParametersOutProvider, IParametersOutConsumer • IParametersInProvider, IParametersInConsumer

Interface DetailsCell Scenario

Interface DetailsCell Interfaces

ICellProvider– Events

• CellProviderInit()• CellReady()

– Event Handlers• CellConsumerInit()

ICellConsumer– Events

• CellConsumerInit()

– Event Handlers• CellProviderInit()• CellReady()

Interface DetailsRow Scenario

Interface DetailsRow Interfaces

IRowProvider– Events

• RowProviderInit()• RowReady()

– Event Handlers• None

IRowConsumer– Events

• None

– Event Handlers• RowProviderInit()• RowReady()

Interface Details List Scenario

Interface Details List Interfaces

IListProvider– Events

• ListProviderInit()• ListReady()• PartialListReady()

– Event Handlers• None

IListConsumer– Events

• None

– Event Handlers• ListProviderInit()• ListReady()• PartialListReady()

Interface DetailsFilter Scenario

Interface DetailsFilter Interfaces

IFilterProvider– Events

• SetFilter()• ClearFilter()• NoFilter()

– Event Handlers• FilterConsumerInit()

IFilterConsumer– Events

• FilterConsumerInit()

– Event Handlers• SetFilter()• ClearFilter()• NoFilter()

Interface DetailsParamsOut Scenario

Interface DetailsParamsOut Interfaces

IParmetersOutProvider– Events

• ParametersOutProviderInit()• ParametersOutReady()

– Event Handlers• None

IParametersOutConsumer– Events

• None

– Event Handlers• ParametersOutProviderInit()• ParametersOutReady()

Interface DetailsParamsIn Scenario

IParametersOutProvider IParametersInConsumerTransformer

Interface DetailsParamsIn Interfaces

IParmetersInProvider– Events

• ParametersInReady()

– Event Handlers• ParametersInConsumerInit()

IParametersInConsumer– Events

• ParametersInConsumerInit()

– Event Handlers• ParametersInReady()

Transformers

Transformer Connectable in Browser

Connectable in FrontPage

IRowProvider to ICellConsumer *

Yes Yes

IRowProvider to IFilterConsumer

Yes Yes

IParametersOutProvider to IParametersInConsumer

No Yes

IRowProvider to IParametersInConsumer

No Yes

Transformers allow different interfaces to be connected to one another.

**Not supported for cross page connections.

Compatibility

InterfacesInterfaces

Web PartsWeb Parts

CompatibilityRules • Reciprocal pairs or transformer exist• MaxConnections not exceeded• RunAt matches• Connect over only one interface• No circular connections

Cross Page ConnectionsFeatures

• Allow connecting parts on different pages• Can only be created in FrontPage• Certain interfaces supported

Page 1 (Source)Page 1 (Source) Page 2 (Target)Page 2 (Target)

Cross Page ConnectionsSupported Interfaces

Supported cross page connections. In some cases, a transformer is used.

Source Page Interface Target Page InterfaceIRowProvider IFilterConsumer

IRowProvider IParametersInConsumer

IFilterProvider IFilterConsumer

IParametersOutProvider IParametersInConsumer

IParametersInProvider IParametersInConsumer

Connectable Microsoft Parts

Web Part RunAt ICe

llPro

vid

er

ICe

llCo

ns

um

er

IRo

wP

rov

ide

rIR

ow

Co

ns

um

er

ILis

tPro

vid

er

ILis

tCo

ns

um

er

IFilt

erP

rov

ide

rIF

ilte

rCo

ns

um

er

IPa

ram

ete

rsO

utP

rov

ide

rIP

ara

me

ters

Ou

tCo

ns

um

er

IPa

ram

ete

rsIn

Pro

vid

er

IPa

ram

ete

rsIn

Co

ns

um

er

Data View Web Part Server x x xImage Web Part Server xForm Web Part Server xSpreadsheet Client x x x x xSales Dashboard - (multiple parts) Client x x x xInventory Dashboard - (multiple parts) Client x xPaystub - (multiple parts) Client x xOffice PivotView Client x x x x x xOffice DataSheet Client x x x x x xOffice PivotChart Client x x x x x xOffice PivotTable Client x x x x x xDatasheet View (ListViewWebPart) Both x x x

Code Flow• EnsureInterfaces()

– RegisterInterface()• CanRunAt()• PartCommunicationConnect()• PartCommunicationInit()

– Fire Init Events; e.g., CellProviderInit()• PartCommunicationMain()

– Fire Remaining Events; e.g., CellReady()• GetInitEventArgs()*

*Only needed for interfaces that require transformers.

Creating Connectable Creating Connectable PartsPartsCode Walk Through

Questions?