DualListControl

[DNN通用控件]DualListControl介绍

简介:
它是个双列表框选择控件。它适用于在一个指定的范围内选择一部所需要的内容。在DotNetNuke程序中他可以通用,而且使用简单,只用设置好相应的属性即可。例如:要做一个授权的功能的时候,就可以在Available列表中读取系统所有的角色,将需要被授权的角色移动到Assigned列表中。

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

[DNN通用控件]DualListControl介绍<portal:duallist id="ctlAdminRoles" runat="server" ListBoxWidth="130" ListBoxHeight="130" DataValueField="RoleName" DataTextField="RoleName"></portal:duallist>

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

[DNN通用控件]DualListControl介绍Protected WithEvents ctlAdminRoles As DotNetNuke.UI.UserControls.DualListControl

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

[DNN通用控件]DualListControl介绍Dim objRoles As New RoleController
[DNN通用控件]DualListControl介绍
Dim arrSysRoles As New ArrayList
[DNN通用控件]DualListControl介绍
'获取当前站点所有的角色
[DNN通用控件]DualListControl介绍
arrSysRoles = objRoles.GetPortalRoles(PortalId)
[DNN通用控件]DualListControl介绍
[DNN通用控件]DualListControl介绍
Dim arrAvailableAdminRoles As New ArrayList
[DNN通用控件]DualListControl介绍
Dim arrAssignedAdminRoles As New ArrayList
[DNN通用控件]DualListControl介绍
[DNN通用控件]DualListControl介绍arrAvailableAdminRoles 
= arrSysRoles
[DNN通用控件]DualListControl介绍
'当不是新建时,初始化已选定角色ArrayList,在可选择角色ArrayList中派出已选择部分
[DNN通用控件]DualListControl介绍'
objInfo.AdminRoles是以分号分隔的角色名
[DNN通用控件]DualListControl介绍'
ctlAdminRoles:DualListControl
[DNN通用控件]DualListControl介绍
If Not objInfo Is Nothing Then
[DNN通用控件]DualListControl介绍    
'获取已经选定的角色
[DNN通用控件]DualListControl介绍
    Dim arrAdminRoles As String() = objInfo.AdminRoles.Split(";")
[DNN通用控件]DualListControl介绍    
Dim RoleName As String
[DNN通用控件]DualListControl介绍    
For Each RoleName In arrAdminRoles
[DNN通用控件]DualListControl介绍        
Dim objRole As New RoleInfo
[DNN通用控件]DualListControl介绍        objRole.RoleName 
= RoleName
[DNN通用控件]DualListControl介绍        arrAssignedAdminRoles.Add(objRole)
[DNN通用控件]DualListControl介绍    
Next
[DNN通用控件]DualListControl介绍    
For Each objAvailableRole As RoleInfo In arrAvailableAdminRoles
[DNN通用控件]DualListControl介绍        
For Each objAssignedRole As RoleInfo In arrAssignedAdminRoles
[DNN通用控件]DualListControl介绍            
If objAvailableRole.RoleName = objAssignedRole.RoleName Then
[DNN通用控件]DualListControl介绍                arrAvailableAdminRoles.Remove(objAvailableRole)
[DNN通用控件]DualListControl介绍            
End If
[DNN通用控件]DualListControl介绍        
Next
[DNN通用控件]DualListControl介绍    
Next
[DNN通用控件]DualListControl介绍
End If
[DNN通用控件]DualListControl介绍
[DNN通用控件]DualListControl介绍ctlAdminRoles.Available 
= arrAvailableAdminRoles
[DNN通用控件]DualListControl介绍ctlAdminRoles.Assigned 
= arrAssignedAdminRoles
[DNN通用控件]DualListControl介绍ctlAdminRoles.DataBind()

更正如下:
 
               Dim arrAdminRoles As String() = "已选择角色1;已选择角色2;"
                For Each RoleName As String In arrAdminRoles
                    If RoleName.Trim().Length > 0 Then
                        Dim objRole As New RoleInfo
                        objRole.RoleName = RoleName
                        arrAssignedAdminRoles.Add(objRole)
                    End If
                Next
               'arrSysRoles:全部角色
                For Each objAvailableRole As RoleInfo In arrSysRoles
                    Dim IsInAssigned As Boolean = False
                    For Each objAssignedRole As RoleInfo In arrAssignedAdminRoles
                        If objAvailableRole.RoleName = objAssignedRole.RoleName Then
                            IsInAssigned = True
                            Exit For
                        End If
                    Next
                    If Not IsInAssigned Then
                        arrAvailableAdminRoles.Add(objAvailableRole)
                    End If
                Next

            ctlAdminRoles.Available = arrAvailableAdminRoles
            ctlAdminRoles.Assigned = arrAssignedAdminRoles
            ctlAdminRoles.DataBind()


5、从控件中获取选定项

[DNN通用控件]DualListControl介绍'strAdminRoles:以分号分隔的角色名
[DNN通用控件]DualListControl介绍'
ctlAdminRoles:DualListControl
[DNN通用控件]DualListControl介绍
Dim strAdminRoles As String = String.Empty
[DNN通用控件]DualListControl介绍
For Each objItem As ListItem In ctlAdminRoles.Assigned
[DNN通用控件]DualListControl介绍    strAdminRoles 
= strAdminRoles + ";" + objItem.Text
[DNN通用控件]DualListControl介绍
Next
[DNN通用控件]DualListControl介绍strAdminRoles 
= strAdminRoles.Substring(1)


 更正如下:

[DNN通用控件]DualListControl介绍'strAdminRoles:以分号分隔的角色名
[DNN通用控件]DualListControl介绍'
ctlAdminRoles:DualListControl
[DNN通用控件]DualListControl介绍
Dim strAdminRoles As String = String.Empty
[DNN通用控件]DualListControl介绍
For Each objItem As ListItem In ctlAdminRoles.Assigned
[DNN通用控件]DualListControl介绍    strAdminRoles 
= strAdminRoles  + objItem.Text + ";"
[DNN通用控件]DualListControl介绍
Next

相关文章: