DNN中的通用控件主要在DotNetNuke.UI命名空间下,而与模块开发紧密相关的都在DotNetNuke.UI.UserControls中,它们是开发具有DNN风格模块不可缺少的元素。
LabelControl
简介:
标签控件。这个应该是用的最多的一个控件了。主要起到在输入框前起提示作用,如果点击问号图标开可以给出详细的说明。
位置:
controls\LabelControl.ascx
属性:
ControlName:对应控件。指明该标签对应用那一个控件。如果点击标签就可以使对应的获得焦点。
Text:标签显示文本。
HelpKey:标签帮助对应的ResourceKey(在语言资源文件中获取对应值得关键字)
HelpText:标签帮助文本。在使用时如果显示指明HelpText=""将不显示标签前的问号图标。
ResourceKey:在语言资源文件中获取对应值得关键字。其实我们只要设置一个ResourceKey,在资源文件中分别用ResourceKey.Text和ResourceKey.Help就可以分别表示标签文本和帮助文本了。在其他ASP.NET控件中也可以用这个属性,DNN会自动分析这个属性,把它作为Text值。如:Lable,Button,HyperLink,ListItem(在RadioButtonList,DropDownList中可以通过指定其ListItem中ResourceKey属性实现多语言功能),具体用法可以在DNN的自带模块中找到大量例子。
Suffix:后缀,显示在标签后面的文本。如:?或:
使用方法:
1、首先在需要应用的页面中注册这个控件,如:
<%@ Register TagPrefix="dnn" TagName="Label" Src="~/controls/LabelControl.ascx" %>
2、在需要用到位置写下如下的代码,如:
DualListControl
简介:
它是个双列表框选择控件。它适用于在一个指定的范围内选择一部所需要的内容。在DotNetNuke程序中他可以通用,而且使用简单,只用设置好相应的属性即可。例如:要做一个授权的功能的时候,就可以在Available列表中读取系统所有的角色,将需要被授权的角色移动到Assigned列表中。
位置:
controls\DualListControl.ascx
属性:
ListBoxWidth:类型String,列表框宽度
ListBoxHeight:类型String,列表框宽度
Available:类型ArrayList,可供选择的内容
Assigned:类型ArrayList,选定的内容
DataTextField:类型String,列表框文本字段
DataValueField:类型String,列表框值字段
Enabled:类型Boolean,是否有效
使用方法:
1、首先在需要应用的页面中注册这个控件,如:
<%@ Register TagPrefix="Portal" TagName="DualList" Src="~/controls/DualListControl.ascx" %>
2、在需要用到位置写下如下的代码,如:
3、在后台代码中声明该控件
4、在后台代码中分别绑定Available和Assigned的ArrayList,如:
Dim arrSysRoles As New ArrayList
'获取当前站点所有的角色
arrSysRoles = objRoles.GetPortalRoles(PortalId)
Dim arrAvailableAdminRoles As New ArrayList
Dim arrAssignedAdminRoles As New ArrayList
arrAvailableAdminRoles = arrSysRoles
'当不是新建时,初始化已选定角色ArrayList,在可选择角色ArrayList中派出已选择部分
'objInfo.AdminRoles是以分号分隔的角色名
'ctlAdminRoles:DualListControl
If Not objInfo Is Nothing Then
'获取已经选定的角色
Dim arrAdminRoles As String() = objInfo.AdminRoles.Split(";")
Dim RoleName As String
For Each RoleName In arrAdminRoles
Dim objRole As New RoleInfo
objRole.RoleName = RoleName
arrAssignedAdminRoles.Add(objRole)
Next
For Each objAvailableRole As RoleInfo In arrAvailableAdminRoles
For Each objAssignedRole As RoleInfo In arrAssignedAdminRoles
If objAvailableRole.RoleName = objAssignedRole.RoleName Then
arrAvailableAdminRoles.Remove(objAvailableRole)
End If
Next
Next
End If
ctlAdminRoles.Available = arrAvailableAdminRoles
ctlAdminRoles.Assigned = arrAssignedAdminRoles
ctlAdminRoles.DataBind()
5、从控件中获取选定项
'ctlAdminRoles:DualListControl
Dim strAdminRoles As String = String.Empty
For Each objItem As ListItem In ctlAdminRoles.Assigned
strAdminRoles = strAdminRoles + ";" + objItem.Text
Next
strAdminRoles = strAdminRoles.Substring(1)
ModuleAuditControl
简介:显示创建人和创建时间的控件。
位置:controls\ModuleAuditControl.ascx
属性:
CreatedByUser:创建人。在DNN3.3.x版可以直接输入用户ID就可以显示用户名了。
CreatedDate:创建时间。
使用方法:
1、首先在需要应用的页面中注册这个控件,如:
<%@ Register TagPrefix="Portal" TagName="Audit" Src="~/controls/ModuleAuditControl.ascx" %>
2、在需要用到位置写下如下的代码,如:
3、在后台代码中声明该控件和使用这个控件
ctlAudit.CreatedDate = objArticle.CreatedDate.ToString
ctlAudit.CreatedByUser = objArticle.CreatedByUser.ToString
SectionHeadControl
简介:
可以选择将一部分功能显示的控件,分组到一个table中。并用这个控件实现折叠和展开这组控件。DNN在页面设置、主机设置用的很多。如果你开发的模块有许多要输入的字段,不妨也用用这个控件,把要输入的信息分组,把一些较少用到字段折叠,起到简化界面的作用。
位置:
controls\SectionHeadControl.ascx
属性:
CssClass:样式
IncludeRule:是否在这个选择标签下显示一个水平线<hr>。
IsExpanded:指示初始是否展开控件。
JavaScript:指定展开折叠功能所用到JavaScript函数,这先不用设置默认就好了。
MaxImageUrl:展开时显示图标地址。默认即可。
MinImageUrl:折叠时显示图标地址。默认即可。
ResourceKey:在语言资源文件中获取对应值得关键字。
Text:选择标签文字。这些不需要写,指定ResourceKey,并在资源文件中给出相应的值就可以了。
Section:需要展开和折叠的控件ID,一般是table或div。如果要要使用这个功能,这些table和div必须runat="server"。
使用方法:
1、首先在需要应用的页面中注册这个控件,如:
<%@ Register TagPrefix="dnn" TagName="SectionHead" Src="~/controls/SectionHeadControl.ascx" %>
2、在需要用到位置写下如下的代码,如:
section="tblAuthorize" resourcekey="dshAuthorize" />
<table id="tblAuthorize" runat="server"><tr><td>要折叠或展开的内容</td></tr></table>
由于这篇文章的篇幅已经比较长了,还有TextEditor、UrlControl和URLTrackingControl这三个控件,内容也比较多就分到《DNN模块开发系列文章(6)——DNN中的通用控件(下)》中给大家介绍吧。
系列文章导航:
《DNN模块开发系列文章(1)——分析设计》
《DNN模块开发系列文章(2)——建立模块开发项目》
《DNN模块开发系列文章(3)——在DNN中添加模块定义》
《DNN模块开发系列文章(4)——与模块开发相关的类》
《DNN模块开发系列文章(5)——DNN中的通用控件(上)》
==========================================
作者:二十四画生
转载请注明来源于博客园——二十四画生的Blog,并保留有原文链接。