
- 加为好友
- 发送私信
- 在线聊天
|
| 发表于:2008-04-28 18:00:2915楼 得分:0 |
我的代码如下,但,感觉还是不是很好,有什么更好的方法吗?? #region 创建模块组树 private void AddTreeViewData() { RoleTreeNode firstTreeNode = null; int moduleID = -1; string filterStr = null; string moduleGroupName = null; string moduleGroupCode = ""; int moduleGroupCount = 0; int length = 4; this.dtModuleList = this.dsModuleOperateList.Tables["AdmModGroup"]; length = moduleGroupCode.Trim().Length + 4; filterStr = "LEN(ModuleGroupCode) = " + length.ToString(); DataView dvModuleGroup = new DataView(this.dtModuleList, filterStr, "ModuleGroupCode", DataViewRowState.CurrentRows); moduleGroupCount = dvModuleGroup.Count; if (moduleGroupCount <= 0) return; for (int i = 0; i < moduleGroupCount; i++) { //增加第一节点(模块组AdmModuleGroup中modulegroupcode编码长度等于8的级别) firstTreeNode = new RoleTreeNode(); moduleGroupName = dvModuleGroup[i]["ModuleGroupName"].ToString(); moduleGroupCode = dvModuleGroup[i]["ModuleGroupCode"].ToString(); moduleID = Convert.IsDBNull(dvModuleGroup[i]["ModuleID"]) ? -1 : int.Parse(dvModuleGroup[i]["ModuleID"].ToString()); firstTreeNode.ModuleGroupCode = moduleGroupCode; firstTreeNode.RoleCode = this.roleCode; firstTreeNode.AccountID = this.currentAccountID; firstTreeNode.NodeType = 0; firstTreeNode.ModuleID = moduleID; firstTreeNode.Text = moduleGroupName; firstTreeNode.ImageIndex = 0; firstTreeNode.SelectedImageIndex = 1; this.treeViewEx1.Nodes.Add(firstTreeNode); //增加模块组AdmModuleGroup中modulegroupcode编码长度大于等于12的所有子级 AddSecondTreeNode(firstTreeNode, moduleID, moduleGroupCode); //增加功能节点 AddTreeOpr(firstTreeNode, moduleID, moduleGroupCode); } } private void AddSecondTreeNode(RoleTreeNode treeNode, int moduleID, string moduleGroupCode) { //增加模块组AdmModuleGroup中modulegroupcode编码长度大于等于12的所有子级 int length = 4; string filterStr = ""; string nextModuleGroupName = ""; string nextModuleGroupCode = ""; RoleTreeNode secondTreeNode = null; this.dtModuleList = this.dsModuleOperateList.Tables["AdmModGroup"]; length = moduleGroupCode.Trim().Length + 4; filterStr = "LEN(ModuleGroupCode) = " + length.ToString() + " and ModuleGroupCode like '" + moduleGroupCode + "%'"; DataView dv = new DataView(this.dtModuleList, filterStr, "ModuleGroupCode", DataViewRowState.CurrentRows); for (int j = 0; j < dv.Count; j++) { secondTreeNode = new RoleTreeNode(); nextModuleGroupName = dv[j]["ModuleGroupName"].ToString(); nextModuleGroupCode = dv[j]["ModuleGroupCode"].ToString(); moduleID = Convert.IsDBNull(dv[j]["ModuleID"]) ? -1 : int.Parse(dv[j]["ModuleID"].ToString()); secondTreeNode.ModuleID = moduleID; secondTreeNode.RoleCode = this.roleCode; secondTreeNode.AccountID = this.currentAccountID; secondTreeNode.ModuleGroupCode = nextModuleGroupCode; secondTreeNode.NodeType = nextModuleGroupCode.Trim().Length / 4 - 1; secondTreeNode.Text = nextModuleGroupName; secondTreeNode.ImageIndex = 0; secondTreeNode.SelectedImageIndex = 1; treeNode.Nodes.Add(secondTreeNode); if (moduleID < 0) AddSecondTreeNode(secondTreeNode, moduleID, nextModuleGroupCode);//增加模块组AdmModuleGroup中modulegroupcode编码长度大于等于12的所有子级 else AddTreeOpr(secondTreeNode, moduleID, nextModuleGroupCode);//增加功能节点 } } private void AddTreeOpr(RoleTreeNode treeNode, int moduleID, string moduleGroupCode) { //增加各模块操作节点 this.dtOprList = this.dsModuleOperateList.Tables["AdmModOpr"]; string filterStr = "ModuleID = " + moduleID.ToString(); DataView dvOpr = new DataView(this.dtOprList, filterStr, "OprCode", DataViewRowState.CurrentRows); if (dvOpr.Count <= 0) return; RoleTreeNode threeTreeNode = null; for (int k = 0; k < dvOpr.Count; k++) { threeTreeNode = new RoleTreeNode(); threeTreeNode.OprCode = dvOpr[k]["OprCode"].ToString(); threeTreeNode.ModuleID = Convert.IsDBNull(dvOpr[k]["ModuleID"]) ? -1 : int.Parse(dvOpr[k]["ModuleID"].ToString()); threeTreeNode.ModuleGroupCode = moduleGroupCode; threeTreeNode.RoleCode = this.roleCode; threeTreeNode.AccountID = this.currentAccountID; threeTreeNode.NodeType = 3; threeTreeNode.Text = dvOpr[k]["OprName"].ToString(); threeTreeNode.ImageIndex = 0; threeTreeNode.SelectedImageIndex = 1; treeNode.Nodes.Add(threeTreeNode); //处理已在数据表中存在的子节点 filterStr = "AccountID = " + this.currentAccountID + "and RoleCode = '" + this.roleCode + "'" + "and OprCode = '" + dvOpr[k]["OprCode"].ToString() + "'" + "and ModuleID = " + dvOpr[k]["ModuleID"].ToString(); DataView dvChenkOpr = new DataView(this.dataSetRoleData1.ADMROLERIGHT, filterStr, "OprCode", DataViewRowState.CurrentRows); if (dvChenkOpr.Count > 0) threeTreeNode.Checked = true; } } #endregion | | |
修改
删除
举报
引用
回复
| |