在學習webpairts的過程剛剛可以調式并運作一些簡單的例了,按照我轉的ASP.NET 2.0中使用webpart系列控件 中做到通訊的時候,就開始看不懂了,因為我習慣了c#,有點看不懂vb.net是以很累,上網找一個c#研究了一下,好不容易可以把程式運作出來了,可是有的地方還是看不懂,又專門補了的一下c#的知識可是還是沒有研究出來,我想做的動态通訊,可是現在做出來的靜态的通訊,不管怎樣是做出來的一個。以後在慢慢的研究吧。要是有那位高手看到我的發這片文章,最好能我點指點,給程式寫點注釋。
1:建立website
2.0裡面web項目不叫project了,叫website。
2:建立代碼檔案夾
右擊website/建立檔案夾/命名為“Code”。這是2.0裡面的新特性,系統會在需要的時候到名字為“Code”的檔案夾下找相關定義。
3:建立簡單的通訊接口。右擊“Code”檔案夾/建立一個類檔案/命名為“IMessage”。具體定義如下。
public interface IMessage
{
string Message { get;}
}
4:建立Provider WebPart
這是一個提供服務的webpart。我們通過向上加一個UserControl來制作簡單的webpart。
注意:webpart架構隻是運作這個webpart,如果放入其中的Control不是直接繼承自webpart或者間接使用(比如UserControl之類的),那麼webpart知識包裝這個Control成“GenericWebPart”。
右擊website建立一個UserConrol,命名為ProviderWebPart.ascx。這個控件繼承自接口IMessage;有一個具有ConnectionProvider屬性的方法GetMessage,該方法會把自己(this)傳回;該控件還有一個按鈕和文本框,用來改變Message。
代碼如下:
<%@ Control Language="C#" ClassName="ProviderWebPart" %>
<%@ Implements Inter %>
<script runat="server">
[ConnectionProvider("Message")]
public IMessage GetMessage()
{
return this;
}
public string Message
{
get
{
return _messageTextBox.Text;
}
}
</script>
<asp:TextBox Runat="server" ID="_messageTextBox" />
<asp:Button Runat="server" ID="_postBackButton" Text="Change the Text" />
5:建立Consumer WebPart。
這個是用來使用消息的webpart。也是使用的一個UserControl。
右擊website,建立名為ConsumerWebPart.ascx 的一個UserControl
這裡面有一個具有ConnectionConsumer屬性的方法,用來通訊。在他的OnPreRender事件裡顯示結果(因為這個這個事件觸發的時候系統應該已經完成通訊了)
代碼如下:
<%@ Control Language="C#" ClassName="ConsumerWebPart" %>
<script runat="server">
private IMessage _message;
[ConnectionConsumer("Message")]
public void SetMessage(IMessage message)
{
this._message = message;
}
protected override void OnPreRender(EventArgs e)
{
if (_message != null)
_messageLabel.Text = _message.Message;
base.OnPreRender(e);
}
</script>
<asp:Label Runat="server" ID="_messageLabel" />
這個ConnectionConsumer屬性就是一個receiver。
6:建立測試頁面
建立一個aspx頁面(我直接使用的default.aspx頁面)
放置一個WebPartManager控件,編輯StaticConnections屬性,添加一個connection,設定ID="SampleConnection" ConsumerID="ConsumerWebPart1" ProviderID="ProviderWebPart1" />。
然後放置一個WebPartZone 控件,向裡面拖入剛才建立的兩個UserControl(也就是webpart了)。
結果代碼如下:
<%@ Page Language="C#" %>
<%@ Register TagPrefix="uc1" TagName="ProviderWebPart" Src="ProviderWebPart.ascx" %>
<%@ Register TagPrefix="uc2" TagName="ConsumerWebPart" Src="ConsumerWebPart.ascx" %>
<html>
<head>
<title>Sample Page</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" Runat="server">
<StaticConnections>
<asp:WebPartConnection ID="SampleConnection" ConsumerID="ConsumerWebPart1" ProviderID="ProviderWebPart1"/> </StaticConnections>
</asp:WebPartManager>
<asp:WebPartZone ID="WebPartZone1" Runat="server">
<ZoneTemplate>
<uc1:ProviderWebPart Runat="server" ID="ProviderWebPart1" />
<uc2:ConsumerWebPart Runat="server" ID="ConsumerWebPart1" />
</ZoneTemplate>
</asp:WebPartZone>
</form>
</body>
</html>
7:運作。
這樣一個webparts之間的一個簡單通訊就做完了。我在學習webparts之間老是愛以“webparts”為關鍵字搜尋,可是昨天無意用了一下“web part ”為關鍵字,又搜到很多的文章。對于想學webparts人有所幫助,不要像我學習webparts中,像個無并頭的蒼蠅,亂撞。