天天看點

webparts(web part)簡單的通訊

         在學習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中,像個無并頭的蒼蠅,亂撞。