📄 managepermissions.aspx
字号:
ArrayList rules = Rules;
int selectedRule = SelectedRule;
// // Response.Write(selectedRule);
if(selectedRule >= rules.Count - ParentRuleCount) {
return;
}
AuthorizationRule rule = (AuthorizationRule)rules[selectedRule];
rules.RemoveAt(selectedRule);
rules.Insert(selectedRule + 1, rule);
UpdateRules();
BindGrid();
dataGrid.SelectedIndex = selectedRule + 1;
UpdateRowColors(dataGrid, dataGrid.Rows[selectedRule + 1]);
SelectedRule = selectedRule + 1;
UpdateUpDownButtons();
}
private void MoveRuleUp(object sender, EventArgs e) {
ArrayList rules = Rules;
int selectedRule = SelectedRule;
if(selectedRule == 0) {
return;
}
AuthorizationRule rule = (AuthorizationRule)rules[selectedRule];
rules.RemoveAt(selectedRule);
rules.Insert(selectedRule - 1, rule);
UpdateRules();
BindGrid();
dataGrid.SelectedIndex = selectedRule - 1;
UpdateRowColors(dataGrid, dataGrid.Rows[selectedRule - 1]);
SelectedRule = selectedRule - 1;
UpdateUpDownButtons();
}
private string GetDirectory(string path) {
if (path == null) {
return null;
}
if (path.LastIndexOf('/') == -1) {
return "/";
}
return path.Substring(path.LastIndexOf('/') + 1);
}
private void Page_Init() {
if(!IsPostBack) {
// Note: treenodes persist when added in Init, before loadViewState
TreeNode n = new TreeNode(GetDirectory(ApplicationPath), ApplicationPath);
tv.Nodes.Add(n);
n.Selected = true;
if (String.IsNullOrEmpty(CurrentPath)) {
CurrentPath = ApplicationPath;
}
PopulateChildren(n, CurrentPath);
}
dataGrid.HeaderStyle.HorizontalAlign = DirectionalityHorizontalAlign;
}
private void Page_Load() {
if (!IsPostBack) {
BindGrid();
}
HighlightSelectedNode(tv.Nodes[0], CurrentPath);
}
private void PopulateChildren(TreeNode parent, string selectNodeValue) {
if (parent.ChildNodes.Count == 0) {
VirtualDirectory vdir = GetVirtualDirectory(parent.Value);
foreach (VirtualDirectory childVdir in vdir.Directories) {
string childValue = parent.Value + "/" + childVdir.Name;
TreeNode newNode = new TreeNode(childVdir.Name, childValue);
if (selectNodeValue != null && childValue == selectNodeValue) {
//newNode.Selected = true;
newNode.SelectAction = TreeNodeSelectAction.Select;
}
parent.ChildNodes.Add(newNode);
}
}
}
private bool HighlightSelectedNode(TreeNode node, string path) {
bool foundIt = false;
foreach (TreeNode childNode in node.ChildNodes) {
if (childNode.Value == path) {
childNode.Selected = true;
foundIt = true;
break;
}
}
return foundIt;
}
protected void RedirectToCreatePermission(object sender, EventArgs e) {
Response.Redirect("createPermission.aspx");
}
public void SelectClick(object sender, EventArgs e) {
LinkButton button = (LinkButton)sender;
GridViewRow row = (GridViewRow)button.Parent.Parent;
SelectedRule = row.RowIndex;
dataGrid.SelectedIndex = SelectedRule;
UpdateRowColors(dataGrid, row);
UpdateUpDownButtons();
}
private void SetItemColorRecursive(Control c, Color col) {
foreach(Control child in c.Controls) {
LinkButton button = child as LinkButton;
if (button != null) {
button.ForeColor = col;
}
Label label = child as Label;
if (label != null) {
label.ForeColor = col;
}
SetItemColorRecursive(child, col);
}
}
protected void TreeNodeExpanded(Object sender, TreeNodeEventArgs e) {
foreach(TreeNode child in e.Node.ChildNodes) {
PopulateChildren(child, CurrentPath);
}
}
protected void TreeNodeSelected(object sender, EventArgs e) {
CurrentPath = ((TreeView)sender).SelectedNode.Value;
dataGrid.SelectedIndex = -1;
BindGrid();
}
public void UpdateRowColors(Control dataGrid, Control item) {
if (item == null) {
// unexpected condition -exit gracefully
return;
}
string prevItemID = (string)Session[SELECTED_ITEM];
if (prevItemID != null) {
GridViewRow prevItem = (GridViewRow) ((GridView)dataGrid).FindControl(prevItemID);
if (prevItem != null) {
// REVIEW
SetItemColorRecursive(prevItem, Color.Black);
// prevButton.ForeColor = Color.Black;
}
}
SetItemColorRecursive(item, Color.White);
// Review: best practice for a naming container inside a user control.
string id = item.UniqueID;
int i = id.IndexOf(((GridView)dataGrid).ID);
id = id.Substring(i);
i = id.IndexOf("$");
id = id.Substring(i + 1);
Session[SELECTED_ITEM] = id ;
}
private void UpdateRules() {
Configuration config = OpenWebConfiguration(CurrentPath, true);
AuthorizationSection auth = (AuthorizationSection) config.GetSection("system.web/authorization");
auth.Rules.Clear();
ArrayList rules = Rules;
foreach (AuthorizationRule rule in rules) {
// // Response.Write("rule <br/>");
auth.Rules.Add(rule);
}
// auth.IsModified = true;
SaveConfig(config);
}
private void UpdateUpDownButtons() {
int index = SelectedRule;
moveDown.Enabled = (index < Rules.Count - ParentRuleCount - 1);
moveUp.Enabled = (index > 0);
}
</script>
<asp:content runat="server" contentplaceholderid="buttons">
<asp:button ValidationGroup="none" runat="server" id="button1" text="<%$ Resources:Done %>" onclick="ReturnToPreviousPage"/>
</asp:content>
<asp:content runat="server" contentplaceholderid="titleBar">
<asp:literal runat="server" text="<%$ Resources:ManageAccessRules %>" />
</asp:content>
<asp:content runat="server" contentplaceholderid="content" >
<asp:literal runat="server" text="<%$ Resources:Instructions %>" />
<table width="100%">
<tr>
<td width="80%">
<table cellspacing="0" width="100%" cellpadding="4" rules="none" bordercolor="#CCDDEF" border="1" style="border-color:#CCDDEF;border-style:None;border-collapse:collapse;">
<tr class="callOutStyle">
<td colspan="3"><asp:literal runat="server" text="<%$ Resources:ManageAccessRules %>"/></td>
</tr>
<tr align="=<% DirectionalityHorizontalAlign.ToString(); %>">
<td valign="top" width="200px" align="=<% DirectionalityHorizontalAlign.ToString(); %>">
<asp:panel runat="server" id="panel1" scrollbars="auto" height="150px" width="200px" cssclass="bodyTextNoPadding">
<asp:treeView runat="server" id="tv" onSelectedNodeChanged="TreeNodeSelected" onTreeNodeExpanded="TreeNodeExpanded" nodeStyle-cssClass="bodyTextLowPadding" >
<RootNodeStyle ImageUrl="../../images/folder.gif" />
<ParentNodeStyle ImageUrl="../../images/folder.gif" />
<LeafNodeStyle ImageUrl="../../images/folder.gif" />
<nodestyle cssClass="bodyTextLowPadding"/>
<selectedNodeStyle cssClass="bodyTextLowPaddingSelected"/>
</asp:treeView>
</asp:panel>
</td>
<td valign="top">
<asp:gridview runat="server" id="dataGrid" bordercolor="#CCDDEF" allowsorting="true" gridlines="Horizontal"
borderstyle="None" cellpadding="4" autogeneratecolumns="False" onrowdatabound="ItemDataBound" width="100%" UseAccessibleHeader="true">
<rowstyle cssclass="gridRowStyle" />
<alternatingrowstyle cssclass="gridAlternatingRowStyle" />
<headerstyle cssclass="callOutStyle" font-bold="true" />
<selectedrowstyle cssclass="gridSelectedRowStyle"/>
<pagerstyle forecolor="#000000" backcolor="#EEEEEE"/>
<pagersettings mode="Numeric"/>
<columns>
<asp:templatefield headertext="<%$ Resources:Select%>" visible="false">
<itemtemplate>
<asp:linkbutton runat="server" commandname="Select" forecolor='black' onclick="SelectClick" text=""/>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="<%$ Resources:Permission %>">
<itemtemplate>
<asp:label runat="server" id="select" enabled="<%# IsEntryDeleteable(((GridViewRow) Container).RowIndex) %>" text="<%#GetAction((AuthorizationRule)Container.DataItem)%>"/>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="<%$ Resources:UsersAndRoles %>">
<itemtemplate>
<asp:linkbutton runat="server" id="selectme" enabled="<%# IsEntryDeleteable(((GridViewRow) Container).RowIndex) %>" forecolor="black" onclick="SelectClick" text="<%#GetUsersAndRoles((AuthorizationRule)Container.DataItem, true)%>"/>
</itemtemplate>
</asp:templatefield>
<asp:templatefield headertext="<%$ Resources:Delete %>">
<itemtemplate>
<asp:linkbutton runat="server" id="delete" enabled="<%# IsEntryDeleteable(((GridViewRow) Container).RowIndex) %>" forecolor='black' onClick="DeleteRule" text="<%$ Resources:Delete %>" toolTip='<%# GetToolTip("Delete",GetUsersAndRoles((AuthorizationRule)Container.DataItem, false)) %>'/>
</itemtemplate>
</asp:templatefield>
</columns>
</asp:gridview>
<asp:linkButton runat="server" id="linkButton1" cssClass="bodyTextNoPadding" text="<%$ Resources:AddNewAccessRule %>" onClick="RedirectToCreatePermission"/>
</td>
<td valign="top">
<asp:button runat="server" id="moveUp" text="<%$ Resources:MoveUp %>" enabled="false" onClick="MoveRuleUp" width="110px"/>
<br/>
<asp:button runat="server" id="moveDown" text="<%$ Resources:MoveDown %>" enabled="false" onClick="MoveRuleDown" width="110px"/>
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:content>
<%-- Confirmation Dialog --%>
<asp:content runat="server" contentplaceholderid="dialogTitle">
<asp:literal runat="server" text="<%$ Resources:RuleManagement %>" />
</asp:content>
<asp:content runat="server" contentplaceholderid="dialogContent">
<img src="../../Images/alert_lrg.gif"/>
<asp:literal runat="server" text="<%$ Resources:AreYouSure %>" /> "<asp:Label runat=server id="RuleDescription" />"?
</asp:content>
<asp:content runat="server" contentplaceholderid="dialogBottomLeftButton">
<asp:Button runat="server" OnClick="Yes_Click" Text="<%$ Resources:Yes %>" width="100"/>
</asp:content>
<asp:content runat="server" contentplaceholderid="dialogBottomRightButton">
<asp:Button runat="server" OnClick="No_Click" Text="<%$ Resources:No %>" width="100"/>
</asp:content>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -