creating web parts with connections scott ruble
DESCRIPTION
TRANSCRIPT
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?