platform/Dict/.svn/text-base/RoleEmp.aspx.cs.svn-base

277 lines
6.9 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections;
using System.Data;
using System.Transactions;
using System.Web.UI;
using System.Web.UI.WebControls;
using ZhangPu.Gov.Logical;
using Tracen.Utils;
public partial class RoleEmp : PageBase
{
private LRoleAuthority _logic;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_logic = new LRoleAuthority();
Databound();
bindRoles();
bindDeptEmp(); //分配角色时初始化部门人员树
}
SessionSeting();
}
/// <summary>
/// bound the query list.
/// </summary>
private void Databound()
{
// bindAuth();
// bindRoles();
// if (!isRoleAuth) bindDeptEmp(); //分配角色时初始化部门人员树
bindGV();
UpdateSession();
}
/// <summary>
/// 绑定部门及用户
/// </summary>
private void bindDeptEmp()
{
TreeDeptEmp.Nodes.Clear();
BindTree("0", TreeDeptEmp.SelectedNode, new LEmployee().GetDepartments().DefaultView, new LEmployee().GetActivedEmpDept().DefaultView);
}
/// <summary>
///绑定角色
/// </summary>
private void bindRoles()
{
listRoles.DataSource = _logic.GetAllRoles();
listRoles.DataTextField = "role_name";
listRoles.DataValueField = "pk_role";
listRoles.DataBind();
}
public void BindTree(string id, TreeNode pNode, DataView deptdv,DataView empdv)
{
deptdv.RowFilter = "dep_mastdept = '" + id + "'";
foreach (DataRowView row in deptdv)
{
TreeNode node = new TreeNode();
node.Text = "<em>" + row["dep_name"] + "</em>" + row["pk_department"];
node.Value = row["pk_department"].ToString();
node.SelectAction = TreeNodeSelectAction.None;
node.ShowCheckBox = false;
node.Expanded = true;
empdv.RowFilter = "de_dept=" + node.Value;
foreach (DataRowView emrow in empdv)
{
TreeNode tnEmp = new TreeNode("<Strong>" + emrow["em_name"] + "</Strong>" , emrow["pk_employee"].ToString());
node.ChildNodes.Add(tnEmp);
}
if (pNode == null)
//说明是根节点
{
TreeDeptEmp.Nodes.Add(node);
}
else
{
pNode.ChildNodes.Add(node);
}
BindTree(node.Value, node, new DataView(deptdv.Table), new DataView(empdv.Table));
}
}
private void SessionSeting()
{
if (IsPostBack)
{
_logic = (LRoleAuthority)Session[appScope.PagelevelObj];
}
}
private void UpdateSession()
{
Session[appScope.PagelevelObj] = _logic;
}
/************************************** protected methods (event listeners) ********************************/
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (listRoles.SelectedValue == string.Empty) return;
ArrayList al = new ArrayList();
GetCheckedNode(TreeDeptEmp.Nodes, al);
_logic.Initialize();
// using (TransactionScope trans = new TransactionScope())
{
try
{
_logic.GetRoleEmp.Delete(Convert.ToInt32(listRoles.SelectedValue));
foreach (string id in al)
{
_logic.GetRoleEmp.re_role = Convert.ToInt32(listRoles.SelectedValue);
_logic.GetRoleEmp.re_employee = Convert.ToInt32(id);
_logic.GetRoleEmp.Add();
}
// trans.Complete();
}
catch (MyException)
{
throw;
}
catch (Exception)
{
throw new Exception("出现异常,保存失败。");
}
}
Databound();
}
//reset the page
protected void btnCancel_Click(object sender, EventArgs e)
{
_logic.Initialize();
Page_Load(this, e);
}
/***************************************** internal methods ********************************************/
/// <summary>
/// set data from page to shift object
/// </summary>
private void SetDataBack()
{
}
void GetCheckedNode(TreeNodeCollection tnc, ArrayList checkedvalues )
{
foreach(TreeNode node in tnc)
{
if(node.Checked)
    {
    checkedvalues.Add(node.Value);
}
GetCheckedNode(node.ChildNodes, checkedvalues);
}
}
void SetCheckedNode(TreeNodeCollection tnc, ArrayList setcheckedvalues)
{
foreach (TreeNode node in tnc)
{
node.Checked = setcheckedvalues.Contains(Convert.ToInt32(node.Value));
SetCheckedNode(node.ChildNodes, setcheckedvalues);
}
}
private void chgOperTxt(bool addNew)
{
btnSubmit.Enabled = true;
}
protected void listRoles_SelectedIndexChanged(object sender, EventArgs e)
{
//--重置人员树的选择
/*
if (TreeDeptEmp.SelectedNode != null) TreeDeptEmp.SelectedNode.Selected = false;
lbAuthRole.Text = "人员角色清单";
GvRole.DataSource = null;
GvRole.DataBind();
* */
//--选择人员树复选框
ArrayList empList = new ArrayList();
DataTable dt =_logic.GetEmListByRole(Convert.ToInt32(listRoles.SelectedValue)) ;
foreach (DataRow dr in dt.Rows)
{
empList.Add(dr["pk_employee"]);
}
SetCheckedNode(TreeDeptEmp.Nodes, empList);
bindGV();
}
protected void TreeDeptEmp_SelectedNodeChanged(object sender, EventArgs e)
{
bindGV();
}
void bindGV( )
{
//人员角色,权限清单
string nodevalue = TreeDeptEmp.SelectedValue;
if (nodevalue.Length >0 && nodevalue != "0") //selected node is an employee
{
lbEmRole.Text = TreeDeptEmp.SelectedNode.Text + " 人员角色清单";
GvRole.DataSource = _logic.GetRoleByEm(Convert.ToInt32(nodevalue));
lbEmAuth.Text = TreeDeptEmp.SelectedNode.Text + " 人员权限清单";
GVauth.DataSource = _logic.GetAuthByEm(Convert.ToInt32(nodevalue));
}
GvRole.DataBind();
GVauth.DataBind();
//角色对应的人员清单
if (listRoles.SelectedItem != null)
{
lbRoleEm.Text = listRoles.SelectedItem.Text + " 角色人员清单";
GvEm.DataSource = _logic.GetEmListByRole(Convert.ToInt32(listRoles.SelectedValue));
}
GvEm.DataBind();
}
}