10.2.2 创建Web Part使用程序
创建Web Part使用程序比创建提供程序容易得多:只需创建一个连接点方法即可。连接点方法是一个子例程,它接受一个声明为接口类型的参数,例如IBookInfo。必须给该方法提供ConnectionConsumer特性,这个特性可以是要在ConnectionsZone用户界面中使用的显示名称。使用传送给方法的参数,例程中的方法就可以通过接口访问提供程序。下面的Visual Basic 2005代码通过IBookInfo接口访问提供程序,提取ISBN属性的值。
<WebControls.WebParts.WebParts.ConnectionConsumer("IBookInfo Consumer")> _
Public Sub IBookInfoConsumer(ByVal bk As IBookInfo)
Dim strISBN As String
strISBN = bk.ISBN
End Sub
C#的对应代码如下所示。
[WebControls.WebParts.WebParts.ConnectionConsumer("IBookInfo Consumer")]
public void IBookInfoConsumer(IBookInfo bk)
{
string strISBN;
strISBN = bk.ISBN;
}
要在连接例程的外部访问提供程序,只需在类级上把一个变量声明为接口类型。可以在连接例程中设置这个变量,再在连接例程的外部使用它。但如果Web Part使用程序没有连接到提供程序上,在Visual Basic 2005中,类变量就设置为Nothing,在C#中设置为null。为了处理这种情况,应在使用类变量之前检查它是否已设置。
下面的Visual Basic 2005代码把变量ibk声明为IBookInfo,在连接例程中设置ibk,在Render例程中使用ibk变量访问提供程序。
Private ibk As IBookInfo
<WebControls.WebParts.WebParts.ConnectionConsumer("IBookInfo Consumer")> _
Public Sub IBookInfoConsumer(ByVal bk As IBookInfo)
ibk = bk
End Sub
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
If ibk Is Nothing Then
writer.Write("<b>No book information available.</b>")
Else
writer.Write("ISBN: <b>" & ibk.ISBN & "</b>")
End If
End Sub
C#的对应代码如下所示。
private IBookInfo ibk;
[WebControls.WebParts.WebParts.ConnectionConsumer("IBookInfo Consumer")]
public void IBookInfoConsumer(IBookInfo bk)
{
ibk = bk;
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (ibk == null)
{
writer.Write("<b>No book information available.</b>");
}
else
{
writer.Write("ISBN: <b>" + ibk.ISBN + "</b>");
}
}
连接点例程在使用程序中运行之前,不能利用提供程序的接口。在Web Part使用程序中,第一次建立连接和进行后续的页面请求时,连接点例程都在使用程序的Load事件(和主页的LoadComplete事件)之后、页面的PreRender事件之前运行。
提示:
提供程序的连接例程仅在使用程序的连接点例程之前运行,而不在提供程序的生存期的其他时刻运行。






