1、首先我們創建一個 RootObjectpublic 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