ASP.NET 2.0中使用webpart系列控件(5)
發表于:2007-06-30來源:作者:點擊數:
標簽:
此外,在運行期間,還可以動態地修改Webpart控件的外觀等屬性,如下: 1) 往窗體中添加一個editor zone的區域控件,往其中再拖放一個appearanceEdiotrPart控件,該控件可以在運行時,讓用戶動態改變各webpart控件的屬性。 2) 我們再修改radiobutton選擇框的
此外,在運行期間,還可以動態地修改Webpart控件的外觀等屬性,如下:
1) 往窗體中添加一個editor zone的區域控件,往其中再拖放一個appearanceEdiotrPart控件,該控件可以在運行時,讓用戶動態改變各webpart控件的屬性。
2) 我們再修改radiobutton選擇框的代碼如下,則加一個編輯模式:
<ASP:RadioButtonList ID="rblMode" runat="server" AutoPostBack="True">
<asp:ListItem>Browse Display Mode</asp:ListItem>
<asp:ListItem>Design Display Mode</asp:ListItem>
<asp:ListItem>Catalog Display Mode</asp:ListItem>
<asp:ListItem>Edit Display Mode</asp:ListItem>
</asp:RadioButtonList>
3) 修改code-behind代碼如下:
Protected Sub rblMode_SelectedIndExchanged(ByVal sender As Object, ByVal e As System.EventArgs) _
Handles rblMode.SelectedIndexChanged
Select Case rblMode.SelectedIndex
Case 0 : WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode
Case 1 : WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode
Case 2 : WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode
Case 3 : WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode
End Select
End Sub
4) 運行程序,選擇edit display mode模式,這時,會發現每個控件的右上角,會多了一個"edit"的按鈕,點該按鈕,彈出如下圖的窗體,用戶可以修改每個控件的外觀等屬性。
最后,我們看下,webpart控件之間還可以進行相互之間的通信,下面的例子中,要實現的是,在一個日歷控件中點選某一個日期,會在已經做好的googlesearch的webpart控件的文本框中顯示其日期,達到通信的目的,下面介紹其實現步驟:
1、為了使兩個webpart控件之間進行通信,必須先聲明一個公共的接口。往工程項目里增加一個叫ISelectedDate.
VB的類文件,放在app_code目錄下,寫入如下代碼:
Imports Microsoft.VisualBasic
Public Interface ISelectedDate
ReadOnly Property SelectedDate( ) As Date
End Interface
這里,我們返回一個只讀的日期屬性selectedDate.
2、再創建一個日歷控件CalendarUC.ascx,其中拖拉一個普通的日歷控件即可。然后寫入如下代碼:
Partial Class CalendarUC_ascx
Inherits System.Web.UI.UserControl
Implements ISelectedDate
Public ReadOnly Property SelectedDate( ) As Date Implements ISelectedDate.SelectedDate
Get
Return Calendar1.SelectedDate.Date
End Get
End Property
<ConnectionProvider("SelectedDate", "SelectedDate")> _
Public Function GetSelectedDate( ) As ISelectedDate
Return Me
End Function
End Class
上面的代碼,首先實現了已經聲明了的IselectedDate接口,要留意的是<ConnectionProvider("SelectedDate", "SelectedDate")>中的寫法。由于在這個例子中,日歷控件要為其他的控件提供信息,因此,該日歷控件是一個provider(提供者),而另外的接收信息的控件,是consumer(消費者)。而兩者為了要通信,必須要提供一個通信接入點,就象一個電插頭,要找到合適的電插板一樣。因此,<ConnectionProvider("SelectedDate", "SelectedDate")>中的第一個參數,定義了兩者的接口點,第二個參數,則是要傳遞給consumer的參數,本例是selectedDate。
3、接下來,我們在已經做好的google.ascx控件的代碼中,編寫如下代碼:
Private _selectedDate As ISelectedDate
<ConnectionConsumer("SelectedDate", "SelectedDate")> _
Sub setSearchText(ByVal SearchText As ISelectedDate)
Me._selectedDate = SearchText
End Sub
Protected Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreRender
If _selectedDate IsNot Nothing Then
txtSearch.Text = _selectedDate.SelectedDate.ToShortDateString
End If
End Sub
可以看到 <ConnectionConsumer("SelectedDate", "SelectedDate")>的定義必須和provider中的定義一樣。
4、再修改如下代碼,將兩個控件的命名變得通俗易懂
<ZoneTemplate>
?。紆c1:Google title="Google Search" runat="server" ID="Google1" />
?。紆c3:CalendarUC title="Calendar Web Part" runat="server" ID="CalendarUC1" />
</ZoneTemplate>
5、最后,為了使兩者能互相通信,必須在default.aspx頁中修改如下代碼:
<asp:WebPartManager ID="WebPartManager1" runat="server">
<StaticConnections>
<asp:WebPartConnection ID="Connection"
ProviderID="CalendarUC1"
ProviderConnectionPointID="SelectedDate"
ConsumerID="Google1"
ConsumerConnectionPointID="SelectedDate" />
</StaticConnections>
</asp:WebPartManager>
6、在頁面代碼中,增加一個radiobutton,用作顯示connection模式,并寫入如下代碼:
Case 4 : WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode
7、運行程序,選擇connect displaymode模式。再選擇GOOGLE SEARCH的那個webpart控件,點右上角的"conenct"按鈕,此時,會顯示如下圖所示,提示你要選擇從那個控件中得到信息,這里選擇日歷控件,按確定。那么,當點選日歷控件的某個日期值的時候,GOOGLE SEARCH的那個文本框里,就會顯示相應的日期了。
小結:
本文主要介紹了在ASP.NET 2.0中,如何使用基本的webpart系列控件,以達到改變頁面布局以及如何使頁面的各webpart控件相互之間通信。
原文轉自:http://www.kjueaiud.com