using SuperMap.RealEstate.ServiceModel; using SuperMap.RealEstate.Web.Utility; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Web; using System.Web.UI.WebControls; using Business = SuperMap.RealEstate.Personnel.Storage.Business; using FWB = SuperMap.RealEstate.FrameWork.Business; namespace SuperMap.RealEstate.Personnel.Modules.Rank { public partial class BasePage : SuperMap.RealEstate.Web.UI.PageValid { #region 方法 -> GetBindingDataSource public static DataTable GetBindingDataSource(string pid, string obscureName, Transaction _Transaction, string DataType = "UserType", string OtherCondition = "") { DataTable DataSource = new DataTable(); string format = "", arg2 = "", arg3 = "", fullSQLString = ""; switch (DataType) { case "RoleType": format = "select * from T_RoleType where {0} {1} order by RoleType_PID,RoleType_Index,RoleType_ID"; arg2 = string.IsNullOrEmpty(pid) ? "1 = 1" : "RoleType_PID = " + pid; arg3 = string.IsNullOrEmpty(obscureName) ? "" : " AND RoleType_Name LIKE '%" + obscureName + "%'"; fullSQLString = string.Format(format, arg2, arg3 + OtherCondition); FWB.RoleType _RoleType = new FWB.RoleType(_Transaction); DataSource = _RoleType.ExecuteDataTable(fullSQLString, null, 0, 0); break; case "UserType": format = "SELECT * FROM PLATFORM_FRAMEWORK.T_USERTYPE WHERE {0} {1} ORDER BY USERTYPE_PID,USERTYPE_INDEX,USERTYPE_NAME"; arg2 = string.IsNullOrEmpty(pid) ? "1 = 1" : "USERTYPE_PID = " + pid; arg3 = string.IsNullOrEmpty(obscureName) ? "" : " AND USERTYPE_NAME LIKE '%" + obscureName + "%'"; fullSQLString = string.Format(format, arg2, arg3 + OtherCondition); FWB.UserType _USERTYPE = new FWB.UserType(_Transaction); DataSource = _USERTYPE.ExecuteDataTable(fullSQLString, null, 0, 0); break; } return DataSource; } #endregion #region 方法 -> BindingTreeView public static void BindingTreeView(Transaction _Transaction, string pid, TreeNodeCollection nodes, string DataType, string obscureName, bool withChildNodes, string ID_Encrypt, bool IsUser = false, string CanUrl = "", string UserCanUrl = "", bool ShowCheckBoxes = false, string OtherCondition = "", string OtherUserCondition = "", DataTable _DataTable = null, DataTable UserTable = null, int? _Owner_ID = null) { bool RemoveState = _Owner_ID != null;//默认要移除没有子节点的数据 FWB.UserType _USERTYPE = new FWB.UserType(_Transaction); if (_DataTable == null || UserTable == null) { _DataTable = GetBindingDataSource("", string.Empty, _Transaction, DataType, OtherCondition); } DataRow[] DataRowList = null; string NextPID = ""; switch (DataType) { case "RoleType": DataRowList = _DataTable.Select("RoleType_PID = " + (string.IsNullOrEmpty(pid) ? "-1" : pid)); if (UserTable == null) { UserTable = _USERTYPE.ExecuteDataTable("SELECT * FROM PLATFORM_FRAMEWORK.T_Role WHERE 1 = 1" + OtherUserCondition); } break; case "UserType": DataRowList = _DataTable.Select("USERTYPE_PID = " + (string.IsNullOrEmpty(pid) ? "-1" : pid)); if (UserTable == null) { UserTable = _USERTYPE.ExecuteDataTable("SELECT * FROM PLATFORM_FRAMEWORK.T_USER WHERE 1 = 1" + OtherUserCondition); } break; case "ProDefType": DataRowList = _DataTable.Select("PRODEFTYPE_PID = " + (string.IsNullOrEmpty(pid) ? "-1" : pid)); break; case "ProDef": DataRowList = _DataTable.Select("PRODEFTYPE_ID = " + (string.IsNullOrEmpty(pid) ? "-1" : pid)); break; } foreach (DataRow _DataRow in DataRowList) { #region 根据参数类型绑定树节点 TreeNode treeNode = new TreeNode(); treeNode.ShowCheckBox = ShowCheckBoxes; switch (DataType) { case "RoleType": #region 角色类型 NextPID = _DataRow["RoleType_ID"].ToString(); treeNode.Text = _DataRow["RoleType_NAME"].ToString(); if (CanUrl == "") { treeNode.NavigateUrl = UriHelper.AddRequestToUrl("RoleTypePage.aspx?ID=" + _DataRow["RoleType_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } else if (CanUrl == "#") { treeNode.NavigateUrl = "#"; } else { treeNode.NavigateUrl = UriHelper.AddRequestToUrl(CanUrl + "ID=" + _DataRow["RoleType_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } treeNode.Value = _DataRow["RoleType_ID"].ToString(); treeNode.ImageToolTip = "RoleType"; treeNode.ImageUrl = TreeNodeImageUrl.RoleType; #endregion break; case "UserType": #region 用户类型 NextPID = _DataRow["UserType_ID"].ToString(); treeNode.Text = _DataRow["USERTYPE_NAME"].ToString(); if (CanUrl == "") { treeNode.NavigateUrl = UriHelper.AddRequestToUrl("USERTYPEPage.aspx?ID=" + _DataRow["USERTYPE_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } else if (CanUrl == "#") { treeNode.NavigateUrl = "#"; } else { treeNode.NavigateUrl = UriHelper.AddRequestToUrl(CanUrl + "ID=" + _DataRow["USERTYPE_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } treeNode.Value = _DataRow["USERTYPE_ID"].ToString(); treeNode.ImageToolTip = "UserType"; treeNode.ImageUrl = TreeNodeImageUrl.UserType; if (_Owner_ID != null && _DataRow["OWNERUNIT_ID"].ToString() == _Owner_ID.ToString()) { RemoveState = false; } else if (_Owner_ID != null) { RemoveState = true; } else { RemoveState = false; } #endregion break; case "ProDefType": #region 业务流程类型 NextPID = _DataRow["ProDefType_ID"].ToString(); treeNode.Text = _DataRow["ProDefType_NAME"].ToString(); if (CanUrl == "") { treeNode.NavigateUrl = UriHelper.AddRequestToUrl("ProDefTypePage.aspx?ID=" + _DataRow["ProDefType_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } else if (CanUrl == "#") { treeNode.NavigateUrl = "#"; } else { treeNode.NavigateUrl = UriHelper.AddRequestToUrl(CanUrl + "ID=" + _DataRow["ProDefType_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } treeNode.Value = _DataRow["ProDefType_ID"].ToString(); treeNode.ImageToolTip = "ProDefType"; treeNode.ImageUrl = TreeNodeImageUrl.ProDefType; #endregion break; case "ProDef": #region 业务流程 treeNode.Text = _DataRow["ProDef_NAME"].ToString(); if (CanUrl == "") { treeNode.NavigateUrl = UriHelper.AddRequestToUrl("ProDefPage.aspx?ID=" + _DataRow["ProDef_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } else if (CanUrl == "#") { treeNode.NavigateUrl = "#"; } else { treeNode.NavigateUrl = UriHelper.AddRequestToUrl(CanUrl + "ID=" + _DataRow["ProDef_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } treeNode.Value = _DataRow["ProDef_ID"].ToString(); treeNode.ImageToolTip = "ProDef"; treeNode.ImageUrl = TreeNodeImageUrl.ProDef; #endregion break; } treeNode.Expanded = new bool?(false); //treeNode.PopulateOnDemand = true; #endregion if (!string.IsNullOrEmpty(obscureName) || withChildNodes) { BindingTreeView(_Transaction, NextPID, treeNode.ChildNodes, DataType, obscureName, withChildNodes, ID_Encrypt, IsUser, CanUrl, UserCanUrl, ShowCheckBoxes, OtherCondition, OtherUserCondition, _DataTable, UserTable, _Owner_ID); //treeNode.PopulateOnDemand = false; } if (IsUser) { if (DataType == "RoleType") { #region 绑定角色树节点 foreach (DataRow UserRow in UserTable.Select("RoleType_ID = " + _DataRow["RoleType_ID"].ToString() + (string.IsNullOrEmpty(obscureName) ? "" : " AND RoleType_ID_NAME LIKE '%" + obscureName + "%'"))) { TreeNode _TreeNode = new TreeNode(); _TreeNode.ShowCheckBox = ShowCheckBoxes; _TreeNode.Text = UserRow["Role_NAME"].ToString(); _TreeNode.Value = UserRow["Role_ID"].ToString(); if (UserCanUrl == "") { _TreeNode.NavigateUrl = UriHelper.AddRequestToUrl("RolePage.aspx?ID=" + UserRow["Role_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } else if (UserCanUrl == "#") { _TreeNode.NavigateUrl = "#"; } else { _TreeNode.NavigateUrl = UriHelper.AddRequestToUrl(UserCanUrl + "ID=" + _DataRow["RoleType_ID"].ToEncrypt(), "Module_ID", ID_Encrypt); } _TreeNode.ImageToolTip = "Role"; _TreeNode.ImageUrl = TreeNodeImageUrl.Role; treeNode.ChildNodes.Add(_TreeNode); } #endregion } else if (DataType == "UserType") { #region 绑定用户树节点 foreach (DataRow UserRow in UserTable.Select("USERTYPE_ID = " + _DataRow["USERTYPE_ID"].ToString() + (string.IsNullOrEmpty(obscureName) ? "" : " AND (USER_NAME LIKE '%" + obscureName + "%' OR USER_PASSPORT LIKE '%" + obscureName + "%')") + (_Owner_ID == null ? "" : " AND PROVINCE_UNIT = '" + _Owner_ID + "'"), "USER_INDEX,USER_ID")) { TreeNode _TreeNode = new TreeNode(); _TreeNode.ShowCheckBox = ShowCheckBoxes; _TreeNode.Text = UserRow["USER_NAME"].ToString() + (UserRow["USER_STATUS"].ToString() == "0" ? "[无效]" : ""); _TreeNode.Value = UserRow["USER_ID"].ToString(); if (UserCanUrl == "") { _TreeNode.NavigateUrl = UriHelper.AddRequestToUrl("USERPage.aspx?ID=" + UserRow["USER_ID"].ToEncrypt() + "&RoleType=" + HttpContext.Current.Request["RoleType"], "Module_ID", ID_Encrypt); } else if (UserCanUrl == "#") { _TreeNode.NavigateUrl = "#"; } else { _TreeNode.NavigateUrl = UriHelper.AddRequestToUrl(UserCanUrl + "ID=" + UserRow["USER_ID"].ToEncrypt() + "&RoleType=" + HttpContext.Current.Request["RoleType"], "Module_ID", ID_Encrypt); } _TreeNode.ImageToolTip = "User"; _TreeNode.ImageUrl = TreeNodeImageUrl.User; treeNode.ChildNodes.Add(_TreeNode); } #endregion } } nodes.Add(treeNode); if (!string.IsNullOrEmpty(obscureName)) { if (treeNode.ChildNodes.Count == 0) { if (treeNode.Text.IndexOf(obscureName, StringComparison.CurrentCultureIgnoreCase) < 0) { nodes.Remove(treeNode); } } else { treeNode.Expanded = new bool?(true); } } else if (RemoveState && treeNode.ChildNodes.Count == 0) { nodes.Remove(treeNode); } } } #endregion } }