[DNN通用控制項]DualListControl介紹

來源:互聯網
上載者:User
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、在需要用到位置寫下如下的代碼,如:

<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()

更正如下:
 
               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、從控制項中擷取選定項

'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)

 更正如下:

'strAdminRoles:以分號分隔的角色名稱
'ctlAdminRoles:DualListControl
Dim strAdminRoles As String = String.Empty
For Each objItem As ListItem In ctlAdminRoles.Assigned
    strAdminRoles = strAdminRoles  + objItem.Text + ";"
Next

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.