用WebParts整合用户控件
时间:2009-06-26 来源:stug1980
不过笔者的方案并不完善。虽然真正的WebPart显示的是描述性信息,但是用户控件却不是。此外,笔者还没有解决设定用户控件值以实现自定义WebPart的问题。
在自定义报告控制板上,这些性能都会显得十分有用。在可得的用户控件目录中,每个用户控件都能够显示一点,这样用户就更容易明白报告内容。另外,真正的WebPart会让用户提供输入值以自定义报告。例如,默认报告或许会显示所有区域的销售情况,而用户可以自定义报告以便只显示用户真正需要看到的部分。
这些选项即便是在使用用户控件的时候也都能获得。
执行描述
将用户控件作为WebPart使用的第一步是让它执行 ︳WebPart界面,如下所示:
Partial class AnnualSalesReportUserControl
Inherits system.Web.UI.UserControl
Implements IWebPart
这一更改所带来的改变是为用户控件增加了六个属性,分别 是:Title,Subtitle,Description,TitleUrl,CataloglconlmageUrl和 TitleIconImageUrl。其中前四个属性是最容易执行的属性,因为他们只要求一个字符串值。在许多方面,Title和Subtitle是最重 要的属性,因为他们能被自动显示到WebForm或WebPart上,或者是当控件显示到目录时被自动显示。
用户可以改变Title属性并将其作为自定义WebPart操作的一部分,但是Subtitle属性是固定的。基于这种差异,你应该用 Subtitle属性对需要用户执行的自定义WebPart进行单独描述。Title属性应该有预设值能反应报告的默认设定。默认情况下,销售报告显示了 所有地区的销售情况但是可以让用户选择指定的季节,那么好的Title可以是"Sales Report"。执行这些设定需要这些代码:
Private _title As string = "All Regions"
Public ReadOnly Property Subtitle() As String _
Implements System.Web.UI.WebControls.WebParts.IWebPart.Subtitle
Get
Return "Sales Report"
End Get
End Property
Public Property Title() As String _
Implements System.Web.UI.WebControls.WebParts.IWebPart.Title
Get
Return _title
End Get
Set(ByVal value As String)
_title = value
End Set
End Property
执行自定义
下一步是让用户自定义用户控件的工作方式。对于一份报告,这或许意味着让用户设置发送到报告选择标准的参数。报告的默认参数可以是一个星号,但是纵观所有属性用户可能被允许使用某一特定区域。
你只需要创建接受该区域的属性,然后为其添加Personalizable和WebBrowsable属性,如下所示:
Private _region As &string = "*"
< Personalizable(True) > _ < WebBrowsable()> _ Public Property Region() As String Get Return _region End Get _region = value RegenerateReport(_region) End Set End Property |
最后,要让用户把控件放到编辑模式中。要做到这一点,首先要向页面中添加一个按钮,按钮为菜单控件提供了编辑选项,如此,WebPart框架就可以添加用户控件了。添加按钮的代码如下所示:
Me.WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode
现在,当用户需要自定义WebPart/User Control时,可以点击按钮并选择用户控件里菜单中的编辑选项。完成这些操作以后,PropertyGridEditorPart会出现在页面,并与 标记为自定义属性的控件一起存在。用户可以输入数值来控制WebPart。ASP.net的WebPart框架会节省设置以便用户下次浏览页面时使用。