You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
140 lines
6.4 KiB
140 lines
6.4 KiB
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="role_power.aspx.cs" Inherits="SCP.admin.role_power" %>
|
|
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head runat="server">
|
|
<title></title>
|
|
<style>
|
|
ul.powers {
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
ul.powers li {
|
|
margin: 5px 15px 5px 0;
|
|
display: inline-block;
|
|
min-width: 150px;
|
|
}
|
|
|
|
ul.powers li input {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
ul.powers li label {
|
|
margin-left: 5px;
|
|
}
|
|
|
|
/* 自动换行,放置权限列表过长 */
|
|
.x-grid-row .x-grid-cell-inner {
|
|
white-space: normal;
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<form id="form1" runat="server">
|
|
<f:PageManager ID="PageManager1" AutoSizePanelID="RegionPanel1" runat="server"></f:PageManager>
|
|
<f:RegionPanel ID="RegionPanel1" ShowBorder="false" runat="server">
|
|
<Regions>
|
|
<f:Region ID="Region1" ShowBorder="false" ShowHeader="false" Width="200px" Position="Left" Layout="Fit" BodyPadding="5px" runat="server">
|
|
<Items>
|
|
<f:Grid ID="Grid1" runat="server" ShowBorder="true" ShowHeader="false" EnableCheckBoxSelect="false" DataKeyNames="ID" AllowSorting="true" OnSort="Grid1_Sort" SortField="Name" SortDirection="DESC" AllowPaging="false" EnableMultiSelect="false" OnRowClick="Grid1_RowClick" EnableRowClickEvent="true">
|
|
<Columns>
|
|
<f:RowNumberField></f:RowNumberField>
|
|
<f:BoundField DataField="Name" SortField="Name" ExpandUnusedSpace="true" HeaderText="角色名称"></f:BoundField>
|
|
</Columns>
|
|
</f:Grid>
|
|
</Items>
|
|
</f:Region>
|
|
<f:Region ID="Region2" ShowBorder="false" ShowHeader="false" Position="Center" Layout="Fit" BodyPadding="5px 5px 5px 0" runat="server">
|
|
<Items>
|
|
<f:Grid ID="Grid2" runat="server" ShowBorder="true" ShowHeader="false" EnableMultiSelect="true" EnableCheckBoxSelect="false" DataKeyNames="ModuleId,ModuleName" AllowSorting="true" OnSort="Grid2_Sort" OnRowDataBound="Grid2_RowDataBound" SortField="GroupName" SortDirection="DESC" AllowPaging="false">
|
|
<Toolbars>
|
|
<f:Toolbar ID="Toolbar1" runat="server">
|
|
<Items>
|
|
<f:Button ID="btnSelectAll" EnablePostBack="false" runat="server" Text="全选">
|
|
</f:Button>
|
|
<f:Button ID="btnUnSelectAll" EnablePostBack="false" runat="server" Text="反选">
|
|
</f:Button>
|
|
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
|
|
</f:ToolbarSeparator>
|
|
<f:Button ID="btnGroupUpdate" Icon="GroupEdit" runat="server" Text="更新当前角色的权限" OnClick="btnGroupUpdate_Click">
|
|
</f:Button>
|
|
</Items>
|
|
</f:Toolbar>
|
|
</Toolbars>
|
|
<Columns>
|
|
<f:RowNumberField></f:RowNumberField>
|
|
<f:BoundField DataField="GroupName" SortField="GroupName" HeaderText="分组名称" Width="120px"></f:BoundField>
|
|
<f:TemplateField ExpandUnusedSpace="true" ColumnID="Powers" HeaderText="权限列表">
|
|
<ItemTemplate>
|
|
<asp:CheckBoxList ID="ddlPowers" CssClass="powers" RepeatLayout="UnorderedList" RepeatDirection="Vertical" runat="server">
|
|
</asp:CheckBoxList>
|
|
</ItemTemplate>
|
|
</f:TemplateField>
|
|
</Columns>
|
|
</f:Grid>
|
|
</Items>
|
|
</f:Region>
|
|
</Regions>
|
|
</f:RegionPanel>
|
|
<f:Menu ID="Menu2" runat="server">
|
|
<f:MenuButton ID="menuSelectRows" EnablePostBack="false" runat="server" Text="全选行">
|
|
</f:MenuButton>
|
|
<f:MenuButton ID="menuUnselectRows" EnablePostBack="false" runat="server" Text="取消行">
|
|
</f:MenuButton>
|
|
</f:Menu>
|
|
</form>
|
|
<script src="../res/js/jquery.min.js"></script>
|
|
<script>
|
|
var grid2ID = '<%= Grid2.ClientID %>';
|
|
var btnSelectAll = '<%= btnSelectAll.ClientID %>';
|
|
var btnUnSelectAll = '<%= btnUnSelectAll.ClientID %>';
|
|
|
|
var menuID = '<%= Menu2.ClientID %>';
|
|
var menuSelectRows = '<%= menuSelectRows.ClientID %>';
|
|
var menuUnselectRows = '<%= menuUnselectRows.ClientID %>';
|
|
|
|
|
|
F.ready(function () {
|
|
var grid = F(grid2ID), gridEl = $(grid.el.dom);
|
|
var checkboxSelector = '.powers input[type=checkbox]',
|
|
selectedRowSelector = '.x-grid-row-selected',
|
|
selectedRowCheckboxSelector = selectedRowSelector + ' ' + checkboxSelector;
|
|
|
|
|
|
F(grid2ID).on('beforeitemcontextmenu', function (view, record, item, index, event) {
|
|
F(menuID).showAt(event.getXY());
|
|
event.stopEvent();
|
|
});
|
|
|
|
|
|
function selectCheckbox(checked) {
|
|
var selectedRows = gridEl.find(selectedRowSelector);
|
|
if (selectedRows.length) {
|
|
gridEl.find(selectedRowCheckboxSelector).prop('checked', checked);
|
|
} else {
|
|
gridEl.find(checkboxSelector).prop('checked', checked);
|
|
}
|
|
}
|
|
|
|
F(menuSelectRows).on('click', function () {
|
|
selectCheckbox(true);
|
|
});
|
|
|
|
F(menuUnselectRows).on('click', function () {
|
|
selectCheckbox(false);
|
|
});
|
|
|
|
|
|
F(btnSelectAll).on('click', function () {
|
|
selectCheckbox(true);
|
|
});
|
|
F(btnUnSelectAll).on('click', function () {
|
|
selectCheckbox(false);
|
|
});
|
|
|
|
});
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|
|
|