Web parts 通信

1. 定义通信接口


public   interface  IEmployeeInfo
{
    
int  EmployeeID {  get set ; }
}

2. 在提供者中定义接口成员

 

     public   class  EmployeesWebPart : WebPart, IEmployeeInfo
    {
        [Personalizable(
true ), WebBrowsable( true )]
        
public   int  EmployeeID
        {
            
get  {  return  _empID; }
            
set  { _empID  =  value; }
        }
    
//
    }

3. 在提供者中实现[ConnectionProvider]方法

 

     public   class  EmployeesWebPart : WebPart, IEmployeeInfo
    
{
        [Personalizable(
true), WebBrowsable(true)]
        
public int EmployeeID
        
{
            
get return _empID; }
            
set { _empID = value; }
        }

        
//

        
// 定义ProvideEmployeeInfo方法,传送连接数据
        [ConnectionProvider("EmployeeIDProvider""EmployeeIDProvider")]
        
public IEmployeeInfo ProvideEmployeeInfo()
        
{
            
return this;
        }


        
//
    }

4. 在订阅者中实现[ConnectionConsumer]方法

     public   class  OrdersWebPart : WebPart
    
{
        
public OrdersWebPart()
        
{
            
this.Title = "通信订阅者";
        }


        
private int _empID;
        
private GridView gv = new GridView();
        
private AccessDataSource ads;

        
protected override void RenderContents(HtmlTextWriter writer)
        
{
            
if (_empID < 1)
            
{
                writer.Write(
"<span style='color:gray'>请在文本框中输入大于等于1的值.</span>");
                
return;
            }

            
else
            
{
                ads 
= new AccessDataSource();
                Controls.Add(ads);
                ads.ID 
= "accessDatasource1";
                ads.DataFile 
= "~/App_Data/NorthWind.mdb";
                ads.SelectCommand 
= "SELECT top 8 orderid, customerid,employeeid, orderdate from orders where employeeid=" + _empID.ToString();

                gv 
= new GridView();
                Controls.Add(gv);
                gv.DataSourceID 
= "accessDatasource1";
                gv.CellPadding 
= 3;
                gv.GridLines 
= GridLines.None;
                gv.RenderControl(writer);
            }

        }


        [ConnectionConsumer(
"EmployeeIDConsumer""EmployeeIDConsumer")]
        
public void GetEmployeeInfo(IEmployeeInfo empInfo)
        
{
            
if (empInfo != null)
                _empID 
= empInfo.EmployeeID;
            
else
                
throw new NotSupportedException("未能连接数据库");
        }

    }

 

5. 在WebPartManager控件中声明连接.

< table  border ="0" >
                    
< tr >
                        
< td  colspan ="2" >
                            
< asp:WebPartManager  ID ="WebPartManager1"  runat ="server" >
                                
< StaticConnections >
                                    
< asp:WebPartConnection  ID ="EmpConnection"  ProviderID ="EmployeesWebPart1"  ProviderConnectionPointID ="EmployeeIDProvider"
                                        ConsumerID
="OrdersWebPart1"  ConsumerConnectionPointID ="EmployeeIDConsumer"   />
                                
</ StaticConnections >
                            
</ asp:WebPartManager >
                        
</ td >
                    
</ tr >
                    
< tr  valign ="top" >
                        
< td >
                            
< asp:WebPartZone  ID ="WebPartZone1"  runat ="server"  Width ="300px" >
                            
< ZoneTemplate >
                                
< cw1:EmployeesWebPart  ID ="EmployeesWebPart1"  runat ="server"  EmployeeID ="1"   />
                            
</ ZoneTemplate >
                            
</ asp:WebPartZone >   </ td >
                        
< td >
                            
< asp:WebPartZone  ID ="WebPartZone2"  runat ="server"  Width ="300px" >
                                
< ZoneTemplate >
                                    
< cw1:OrdersWebPart  ID ="OrdersWebPart1"  runat ="server"   />
                                
</ ZoneTemplate >
                            
</ asp:WebPartZone >
                            
</ td >
                    
</ tr >
                
</ table >

你可能感兴趣的:(part)