creating web parts with connections scott ruble
DESCRIPTION
TRANSCRIPT
![Page 1: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/1.jpg)
Creating Web Parts with Connections
![Page 2: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/2.jpg)
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
![Page 3: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/3.jpg)
Previous Technology
• Hardwired solutions• Parts need intimate knowledge of each
other– DDSC.RegisterForEvent, DDSC.RaiseEvent – Parameterized Hyperlinks
• Lack of flexibility• Developer-driven
![Page 4: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/4.jpg)
Web Part ConnectionsConcept
![Page 5: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/5.jpg)
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
![Page 6: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/6.jpg)
Scenarios
• Master/Detail• Parent/Child• Data Entry and Filter• Calculations• Alternate Views• Data Enhancement
![Page 7: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/7.jpg)
ScenariosMaster Detail
![Page 8: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/8.jpg)
ScenariosParent/Child
![Page 9: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/9.jpg)
ScenariosData Entry and Filtering
![Page 10: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/10.jpg)
ScenariosCalculations
![Page 11: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/11.jpg)
ScenariosAlternate Views
![Page 12: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/12.jpg)
ScenariosData Enhancement
![Page 13: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/13.jpg)
Connecting Parts
![Page 14: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/14.jpg)
Supported Interfaces
• ICellProvider, ICellConsumer • IRowProvider, IRowConsumer • IListProvider, IListConsumer • IFilterProvider, IFilterConsumer
• IParametersOutProvider, IParametersOutConsumer • IParametersInProvider, IParametersInConsumer
![Page 15: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/15.jpg)
Interface DetailsCell Scenario
![Page 16: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/16.jpg)
Interface DetailsCell Interfaces
ICellProvider– Events
• CellProviderInit()• CellReady()
– Event Handlers• CellConsumerInit()
ICellConsumer– Events
• CellConsumerInit()
– Event Handlers• CellProviderInit()• CellReady()
![Page 17: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/17.jpg)
Interface DetailsRow Scenario
![Page 18: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/18.jpg)
Interface DetailsRow Interfaces
IRowProvider– Events
• RowProviderInit()• RowReady()
– Event Handlers• None
IRowConsumer– Events
• None
– Event Handlers• RowProviderInit()• RowReady()
![Page 19: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/19.jpg)
Interface Details List Scenario
![Page 20: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/20.jpg)
Interface Details List Interfaces
IListProvider– Events
• ListProviderInit()• ListReady()• PartialListReady()
– Event Handlers• None
IListConsumer– Events
• None
– Event Handlers• ListProviderInit()• ListReady()• PartialListReady()
![Page 21: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/21.jpg)
Interface DetailsFilter Scenario
![Page 22: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/22.jpg)
Interface DetailsFilter Interfaces
IFilterProvider– Events
• SetFilter()• ClearFilter()• NoFilter()
– Event Handlers• FilterConsumerInit()
IFilterConsumer– Events
• FilterConsumerInit()
– Event Handlers• SetFilter()• ClearFilter()• NoFilter()
![Page 23: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/23.jpg)
Interface DetailsParamsOut Scenario
![Page 24: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/24.jpg)
Interface DetailsParamsOut Interfaces
IParmetersOutProvider– Events
• ParametersOutProviderInit()• ParametersOutReady()
– Event Handlers• None
IParametersOutConsumer– Events
• None
– Event Handlers• ParametersOutProviderInit()• ParametersOutReady()
![Page 25: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/25.jpg)
Interface DetailsParamsIn Scenario
IParametersOutProvider IParametersInConsumerTransformer
![Page 26: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/26.jpg)
Interface DetailsParamsIn Interfaces
IParmetersInProvider– Events
• ParametersInReady()
– Event Handlers• ParametersInConsumerInit()
IParametersInConsumer– Events
• ParametersInConsumerInit()
– Event Handlers• ParametersInReady()
![Page 27: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/27.jpg)
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.
![Page 28: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/28.jpg)
Compatibility
InterfacesInterfaces
Web PartsWeb Parts
![Page 29: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/29.jpg)
CompatibilityRules • Reciprocal pairs or transformer exist• MaxConnections not exceeded• RunAt matches• Connect over only one interface• No circular connections
![Page 30: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/30.jpg)
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)
![Page 31: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/31.jpg)
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
![Page 32: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/32.jpg)
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
![Page 33: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/33.jpg)
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.
![Page 34: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/34.jpg)
Creating Connectable Creating Connectable PartsPartsCode Walk Through
![Page 35: Creating Web Parts With Connections Scott Ruble](https://reader035.vdocuments.us/reader035/viewer/2022062511/54bb63324a7959a71c8b4573/html5/thumbnails/35.jpg)
Questions?