二十四画生的Blog


        ——开始学习Orchard框架
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  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、在需要用到位置写下如下的代码,如:

<dnn:label id="plTitle" runat="server" controlname="txtTitle" suffix=":" />


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、在需要用到位置写下如下的代码,如:

<portal:duallist id="ctlAdminRoles" runat="server" ListBoxWidth="130" ListBoxHeight="130" DataValueField="RoleName" DataTextField="RoleName"></portal:duallist>

3、在后台代码中声明该控件

Protected WithEvents ctlAdminRoles As DotNetNuke.UI.UserControls.DualListControl

4、在后台代码中分别绑定Available和Assigned的ArrayList,如:

Dim objRoles As New RoleController
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、从控件中获取选定项

'strAdminRoles:以分号分隔的角色名
'
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、在需要用到位置写下如下的代码,如:

<portal:Audit id="ctlAudit" runat="server" />


3、在后台代码中声明该控件和使用这个控件

Protected WithEvents ctlAudit As ModuleAuditControl

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、在需要用到位置写下如下的代码,如:

<dnn:sectionhead id="dshAuthorize" cssclass="Head" runat="server" isexpanded="False" text="Authorize Settings"
  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中的通用控件(上)