1、首先我们创建一个 RootObject
public class BasePage : System.Web.UI.Page
{
protected IRTXSAPIRootObj RtxRootObj;
public BasePage()
{
RtxRootObj = new RTXSAPIRootObj();
RtxRootObj.ServerIP = "127.0.0.1";
RtxRootObj.ServerPort = 8006;
}
}
后面的页面都会继承 BasePage 类
2、读取部门信息
IRTXSAPIDeptManager dept = RtxRootObj.DeptManager;
string xml = dept.GetChildDepts(""); //取父节点
XmlDataDocument xmldoc = new XmlDataDocument();
xmldoc.LoadXml(xml);
foreach (XmlNode xn in xmldoc.SelectNodes("Departments/Department"))
{
string Name = xn.Attributes["Name"].Value;
}
这样就把顶级部门读取出来了 剩下的只需要用
string parentDeptName = XXX
dept.GetChildDepts(parentDeptName );
循环就可以读取下一级部门了,然后添加到Tree即可。
3、修改部门信息
IRTXSAPIDeptManager dept = RtxRootObj.DeptManager;
dept.SetDeptName(旧名称,新名称);
4、删除部门
IRTXSAPIDeptManager dept = RtxRootObj.DeptManager;
dept.DelDept("部门名称", true);
5、增加部门,为了防止重名的出现,我们添加一个是否存在的校验
IRTXSAPIDeptManager dept = RtxRootObj.DeptManager;
if (dept.IsDeptExist("部门名称"))
{
Alert.ShowInParent("名称已经存在!不能添加!", MessageBoxIcon.Warning);
return;
}
dept.AddDept("部门名称","父部门名称,如果为空,则为顶级节点");
但是有一个值得注意地方是 GetChildDepts("部门1"),如果存在同名的部门,那么只会读取到第一个...
部门1
----部门1-2
--------部门1
------------部门1-3
部门2
------部门2-1
如果碰到这样的有2个部门1, 那么 GetChildDepts("部门1") 只会取到 【部门1-2】,而不户取到【部门1-3】,那么我们上面的代码循环读取就进入死循环了....这里在编程的时候要注意,由于GetChildDepts只能通过部门名称来取值,API没能取到部门的Id,所以这也是一个限制....不知道是他们估计的还是咋样.....
V2.0已经修复这个bug了~~原来是我大意。没仔细阅读SDK文档,采用绝对路径即可
实现
代码下载 http://blog.csdn.net/livelymoon/article/details/9794067