Ringrazio coloro che hanno risposto gentilmente al mio Poll(icino), quindi, augurandovi un
ottimo 2007 (in fondo siamo ancora all'8 gennaio), proseguo
con la miniserie in oggetto.
Vi occorre mettere in comunicazione una webpart che
contiene una tabella e passare il contenuto ad altre webparts che consumano la
prima?
Bene, tutto quello che dovete fare è utilizzare l'interfaccia
IWebPartTable; essa, sfruttando il meccanismo di connessione del Web
Part Framework, consente con un metodo -
GetTableData(TableCallback tbc) - e con una property
- Schema - di spedire un DataTable verso una o più webparts
public sealed class WebPartProvider : WebPart, IWebPartTable{ DataTable _table; public WebPartProvider() { // codice che crea un DataTable (table), alcune DataColumn // e un pò di DataRow } public PropertyDescriptorCollection tableSchema { get { return TypeDescriptor.GetProperties(table.DefaultView[0]); } } public void GetTableData(TableCallback tableCallback) { tableCallback(table.Rows); } public bool ConnPointON { get { object o = ViewState["ConnPointON"]; return (o != null) ? (bool)o : true; } set { ViewState["ConnPointON"] = value; } } [ConnectionProvider("Table", typeof(TableProviderConnectionPoint), AllowsMultipleConnections = true)] public IWebPartTable GetConnectionInterface() { return new TableProviderWebPart(); } public class TableProviderConnPoint : ProviderConnectionPoint { public TableProviderConnPoint(....) : base(....) { } public override bool GetEnabled(Control control) { return ((TableProviderWebPart)control).ConnectionPointEnabled; } }}
Notate la firma di questo metodo public void GetTableData(TableCallback tableCallback);
TableCallBack è delegato a contenere
l'indirizzo...