using BizCom; using SQLData; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using SiteCore; public partial class Ehr_OrgPostPermission : TreeBasePage, ITreePage { protected override void OnPreInit(EventArgs e) { PmTag = "orgpostpermission"; TreeTitle = "选择部门/职位"; ContentTitle = "配置权限"; TreeSelValue = "0"; _searchDateEnum = SearchDateEnum.Empty; } protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { //modulesDataBind(); } } private void modulesDataBind() { StringBuilder sql = new StringBuilder(); sql.AppendFormat("select * from CE_ErpModular where isdel=0 and isoperate=0 order by path asc, sort asc ;"); //sql.AppendFormat("select * from ce_erpindex order by sort;"); DataSet ds = DbHelper.DbConn.ExecuteDataset(sql.ToString()); DataTable dt = ds.Tables[0]; System.Data.DataView dv = new System.Data.DataView(dt); //selModules.Items.Add(new System.Web.UI.WebControls.ListItem("--请选择--", "0")); getModulesTree(dv, 0); DataTable dt1 = ds.Tables[1]; foreach (DataRow dr in dt1.Rows) { //selIndex.Items.Add(new ListItem(dr["name"].ToString(), dr["ID"].ToString())); //selView.Items.Add(new ListItem(dr["name"].ToString(), dr["ID"].ToString())); } } private void getModulesTree(System.Data.DataView dv, object id) { dv.RowFilter = "parentid=" + id; foreach (DataRowView dr in dv) { //selModules.Items.Add(new System.Web.UI.WebControls.ListItem(getNodeName(dr["Name"], dr["Path"]), dr["ID"].ToString())); getModulesTree(dv, dr["ID"]); } } private string getNodeName(object name, object path) { if (path.ToString() == "") return name.ToString(); int len = path.ToString().Split('|').Length - 2; return "".PadLeft(len, ' ') + name; } #region 左边数据 System.Data.DataView dv = null; System.Data.DataView pdv = null; int si = 0; public object GetTreeData() { StringBuilder str = new StringBuilder(); StringBuilder pstr = new StringBuilder(); str.Append("["); StringBuilder sql = new StringBuilder(); //if (CurrentUser.IsAdmin) // sql.AppendFormat("select id,name from ce_erporganization where parentid=0 order by sort asc ;"); //else int limit_orgid = 0; if (CurrentUser.UserPost.Post.Code == "SysAdmin") { sql.AppendFormat("select * from ce_erporganization order by parentid,sort asc ;"); } else { limit_orgid = CurrentUser.UserPost.OrgID; sql.AppendFormat("select * from ce_erporganization where id={0} or path like '%|{0}|%' order by parentid,sort asc ;",limit_orgid); } sql.AppendFormat("select * from view_erppost order by Path asc, sort asc ;"); DataSet ds = DbHelper.DbConn.ExecuteDataset(sql.ToString()); if (ds != null && ds.Tables[0].Rows.Count < 1) return null; DataTable dt = ds.Tables[0]; dv = new DataView(ds.Tables[0]); pdv = new DataView(ds.Tables[1]); GetOtherTree(0, limit_orgid, ref str,ref pstr); if (str.ToString() == "[") { } str.Append("]"); return str.ToString(); } private void GetOtherTree(object id,int limit_orgid, ref StringBuilder str,ref StringBuilder pstr) { if(limit_orgid>0) dv.RowFilter = "ID="+limit_orgid;//ParentID=" + id+" and else dv.RowFilter = "ParentID=" + id; dv.Sort = "Sort asc"; bool hasP = false; //if (Convert.ToInt32(id) > 0) //{ // GetPostTree(id, ref str, out hasP); // if (!hasP) return; //} //return; foreach (DataRowView drv in dv) { pstr = new StringBuilder(); hasP = false; GetPostTree(drv["ID"], ref pstr, out hasP); if (!hasP) continue; if (si == 0) str.Append("{"); else str.Append(",{"); str.AppendFormat("\"id\":\"o_{0}\",\"name\":\"{1}\",\"pid\":\"o_{2}\",\"expanded\": true", drv["ID"], drv["Name"], id); str.Append("}"); si++; str.Append(pstr); GetOtherTree(drv["ID"],0, ref str,ref pstr); } } private void GetPostTree(object id, ref StringBuilder str,out bool hasP) { pdv.RowFilter = "OrgID=" + id; if (pdv.Count < 1) { hasP = false; return; } foreach (DataRowView drv in pdv) { str.Append(",{"); str.AppendFormat("\"id\":\"p_{0}\",\"name\":\"{1}\",\"pid\":\"o_{2}\",\"orgId\":\"{3}\",\"expanded\": true", drv["ID"], drv["Name"], id, drv["OrgID"]); str.Append("}"); } hasP = true; } #endregion }