读取RTX组织架构

这篇博客介绍了如何使用RTXSAPILib库来读取和显示RTX的组织架构。首先创建RTXAPIRootObj和RTXSAPIDeptManager对象,然后通过GetAll方法递归获取并展示部门节点。当用户选择特定部门时,程序会加载该部门的成员列表,通过XML解析获取并显示在ListBox中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using RTXSAPILib; 

部分代码:
 
RTXSAPILib.RTXSAPIRootObj RootObj;  //声明一个根对象
RTXSAPILib.RTXSAPIDeptManager DeptManagerObj;  //声明一个部门管理对象
 
            RootObj = new RTXSAPIRootObj();     //创建根对象
            DeptManagerObj = RootObj.DeptManager;    //通过根对象创建部门管理对象

 
        // 调用
            //显示RTX部门架构
            string deptpath = null;
            this.tvRTXDepts.Nodes.Clear(); //tvRTXDepts为显示组织架构的TreeView
            TreeNode td = new TreeNode();
            td.Text = "部门架构";
            this.tvRTXDepts.Nodes.Add(td);
            GetAll(deptpath, td);
/// <summary>获取RTX所有部门架构
        /// 获取RTX所有部门架构
        /// </summary>
        /// <param name="path"></param>
        /// <param name="CurrentNode"></param>
        private void GetAll(string path, TreeNode CurrentNode)
        {
            DeptInfo mainDir = new DeptInfo(path);
            try
            {
                foreach (string depts in mainDir.GetDept())
                {
                    TreeNode td = new TreeNode();
                    td.Text = depts;
                    CurrentNode.Nodes.Add(td);
                    GetAll(path + @"" + depts, td);
                }
            }
            catch (Exception err)
            {
                // MessageBox.Show(err.Message);
            }
        }     
//选中部门是在listBox中显示该部门的成员
 
 /// <summary>显示RTX部门的成员
        /// 显示RTX部门的成员
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void tvRTXDepts_AfterSelect(object sender, TreeViewEventArgs e)
        {
 
            XmlDocument xmldoc = new XmlDocument();
            this.listRTXAccounts.Items.Clear();
            try
            {
                if (this.tvRTXDepts.SelectedNode.Text.Trim() != "部门架构")
                {
                    string deptUsers = DeptManagerObj.GetDeptUsers(this.tvRTXDepts.SelectedNode.Text.Trim()); //查看部门下的用户列表
                    string xmlstr = "<?xml version="1.0" encoding="GB2312" ?>" + deptUsers;
                    xmldoc.LoadXml(xmlstr);
                    XmlNode root = xmldoc.SelectSingleNode(@"/Users");
                    XmlNodeList nodeList = root.ChildNodes;
                    foreach (XmlNode node in nodeList)
                    {
                        this.listRTXAccounts.Items.Add(node.Attributes["Name"].InnerText);
                    }
                }
            }
            catch (System.Runtime.InteropServices.COMException ex)
            {
                MessageBox.Show(ex.Message);
            }
        }

 

 


using System;
using System.Collections.Generic;
using System.Text;
using RTXSAPILib;
using System.Xml;
using System.Diagnostics;
using System.Collections;
namespace RTXMsgTongYiManagerForm
{
    class DeptInfo
    {
        string deptpath;
        public DeptInfo(string path)  //构造函数,输入一个部门的路径
        {
            deptpath = path;
        }
        public string DetpPath //属性,把传进来的路径赋值给类的deptpath
        {
            get
            {
                return deptpath;
            }
            set
            {
                deptpath = value;
            }
        }
public List<string> GetDept()
        {
            RTXSAPIRootObj RootObj = new RTXSAPIRootObj();  //创建一个根对象
            RTXSAPIDeptManager DeptObj = RootObj.DeptManager;   //创建一个部门管理对象
            string strChildDepts = DeptObj.GetChildDepts(deptpath); //获取该部门下的子部门
            List<string> ChildDepts = new List<string>(); //创建一个集合对象,用来存在子部门
            XmlDocument xmlDoc = new XmlDocument();  //创建一个xmlDocument对象
            xmlDoc.LoadXml(strChildDepts);// 把子部门的xml字符串输进xml对象里面
            XmlNode root = xmlDoc.DocumentElement; //获取文档的element
            IEnumerator ienum = root.GetEnumerator();
            XmlNode dept;
            if (HasChildDepts(strChildDepts))  //判断是否有子部门
            {
                while (ienum.MoveNext())
                {
                    dept = (XmlNode)ienum.Current;
                    string deptNameXml = dept.OuterXml;
                    int beginPos = deptNameXml.IndexOf(""") + 1;
                    int lastPos = deptNameXml.LastIndexOf(""");
                    string strDeptName = deptNameXml.Substring(beginPos, lastPos - beginPos);
                    ChildDepts.Add(strDeptName);
                }
                return ChildDepts; //返回集合
            }
            else
            {
               return new List<string>(); //如果没有子部门返回空
              }
        }
        private bool HasChildDepts(string strChildDetps)
        {
            if (strChildDetps.Length == 27)
                return false;
            else
                return true;
        }
    }
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值