|  |  | 
 |  |  | use "xcontrol.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe | 
 |  |  | use "xbase.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe | 
 |  |  | use "saleorder.view.vd" | 
 |  |  | unit trade | 
 |  |  | [ | 
 |  |  |    class ViewAdministrativeDepartmentList : public listwin | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <xcontrol/xcell.hpp> | 
 |  |  |  | 
 |  |  |  | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  |    class  __declspec(dllexport) ViewAdministrativeDepartmentList : public listwin | 
 |  |  |    { | 
 |  |  |    public: | 
 |  |  |       xdwgrid      dw_list; | 
 |  |  |       xtreeview   tv_folder;//hxsoft.com -> Developer -> wface -> vcontrol | 
 |  |  |       string rows; | 
 |  |  |       string urlTree; | 
 |  |  |       string myDataUrl; | 
 |  |  |       xstring rows; | 
 |  |  |       xstring urlTree; | 
 |  |  |       xstring myDataUrl; | 
 |  |  |       int changeddlb; | 
 |  |  |  | 
 |  |  |       xnode   m_agentNode;   //Agent Condition | 
 |  |  |  | 
 |  |  |    public: | 
 |  |  |       ViewAdministrativeDepartmentList(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} | 
 |  |  |    public: | 
 |  |  |       static ViewAdministrativeDepartmentList* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |       { | 
 |  |  |          ViewAdministrativeDepartmentList* pWin = new ViewAdministrativeDepartmentList(implPtr, (HWND)hWnd); | 
 |  |  |          return pWin; | 
 |  |  |       } | 
 |  |  |       int SetAgent() | 
 |  |  |       { | 
 |  |  |          string xfNodeAgentArea = "agentarea"; | 
 |  |  |          xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |          xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |          if (m_agentNode) | 
 |  |  |          { | 
 |  |  |             SetAgentNodeContent(anode, m_agentNode); | 
 |  |  |             SetAgentNode(anode, m_agentNode); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement xframeElement = GetElement(); | 
 |  |  |             msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*"); | 
 |  |  |             KXMLDOMElement xframeElement = GetElement(); | 
 |  |  |             KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); | 
 |  |  |             if (agent) | 
 |  |  |             { | 
 |  |  |                string s = agent.xml; | 
 |  |  |                m_agentNode = SetAgentNodeContent(anode, s); | 
 |  |  |                xstring s = agent.xml(); | 
 |  |  |                m_agentNode = SetAgentNode(anode, s); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //展开放进树里面 | 
 |  |  |       int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image) | 
 |  |  |       int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) | 
 |  |  |       { | 
 |  |  |          /*在具体应用时可以用DOMDocument的Load方法来装载XML文档 | 
 |  |  |          用IXMLDOMNode 的selectNodes(查询的结果有多个,得到存放搜索结果的链表) | 
 |  |  |          或selectSingleNode(查询的结果有一个,在有多个的情况下返回找到的第一个节点)方法进行查询, | 
 |  |  |          用createNode和appendChild方法来创建节点和追加节点, | 
 |  |  |          用IXMLDOMElement的setAttribute和getAttribute方法来设置和获得节点的属性。*/ | 
 |  |  |          msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item"); | 
 |  |  |          int len = nlist.length; | 
 |  |  |          KXMLDOMNodeList nlist = ele.selectNodes(L"item"); | 
 |  |  |          int len = nlist.length(); | 
 |  |  |          if (len > 0) | 
 |  |  |             tv_folder.SetItemChild(hItem, 1); | 
 |  |  |          for (int i = 0; i < len; i++) | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement e = nlist.item(i); | 
 |  |  |             string name = e.getAttribute("name"); | 
 |  |  |             int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);//trust(e as int)将e放入树结构里面的data属性中 | 
 |  |  |             KXMLDOMElement e = nlist.item(i); | 
 |  |  |             xstring name = e.getAttribute(L"name"); | 
 |  |  |             HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image);//trust(e as int)将e放入树结构里面的data属性中 | 
 |  |  |             ExpandCatChildFolder(h, e, 35); | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //展开文件夹明细 | 
 |  |  |       int ExpandFolderItem(int hItem, string parentid) | 
 |  |  |       int ExpandFolderItem(HTREEITEM hItem, xstring parentid) | 
 |  |  |       { | 
 |  |  |          xml x = ViewObject::RetrieveData(urlTree, "status", "有效", "parentid", parentid);//获取后台数据 | 
 |  |  |          xml x = ViewObject::RetrieveData(urlTree, L"status", L"有效", L"parentid", parentid);//获取后台数据 | 
 |  |  |          if (!x) { | 
 |  |  |             return 0; | 
 |  |  |          } | 
 |  |  |          msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item"); | 
 |  |  |          int len = nlist.length; | 
 |  |  |          KXMLDOMNodeList nlist = x.selectNodes(L"data/Item"); | 
 |  |  |          int len = nlist.length(); | 
 |  |  |          for (int i = 0; i < len; i++) | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement e = nlist.item(i); | 
 |  |  |             string name = e.selectSingleNode("name").text; | 
 |  |  |             int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35); | 
 |  |  |             KXMLDOMElement e = nlist.item(i); | 
 |  |  |             xstring name = e.selectSingleNode(L"name").text(); | 
 |  |  |             HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); | 
 |  |  |             ExpandCatChildFolder(h, e, 35); | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //查找当前树项的顶级目录 | 
 |  |  |       int LookupTopFolder(int hItem) | 
 |  |  |       HTREEITEM LookupTopFolder(HTREEITEM hItem) | 
 |  |  |       { | 
 |  |  |          int hRoot = tv_folder.GetRootItem(); | 
 |  |  |          HTREEITEM hRoot = tv_folder.GetRootItem(); | 
 |  |  |          while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); | 
 |  |  |          return hItem; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //树展开 | 
 |  |  |       int OnTreeExpanding(ref TNotifyEvent evt, int p) | 
 |  |  |       int OnTreeExpanding(TEvent* evt, int p) | 
 |  |  |       { | 
 |  |  |          ref NMTREEVIEW nmtv = evt.pnmh; | 
 |  |  |          int hItem = nmtv.itemNew.hItem; | 
 |  |  |          int hTopItem = LookupTopFolder(hItem); | 
 |  |  |          string name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |          int child = tv_folder.GetChildItem(hItem); | 
 |  |  |          NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; | 
 |  |  |          HTREEITEM hItem = nmtv.itemNew.hItem; | 
 |  |  |          HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |          xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |          HTREEITEM child = tv_folder.GetChildItem(hItem); | 
 |  |  |  | 
 |  |  |          msxml::IXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |          string parentid = ""; | 
 |  |  |          if (name != "部门结构") | 
 |  |  |             parentid = e.selectSingleNode("adid").text; | 
 |  |  |          KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |          xstring parentid = L""; | 
 |  |  |          if (name != L"部门结构") | 
 |  |  |             parentid = e.selectSingleNode(L"adid").text(); | 
 |  |  |          trace(parentid); | 
 |  |  |          if (!child) { | 
 |  |  |             ExpandFolderItem(hItem, parentid); | 
 |  |  | 
 |  |  |       //查询节点的列表数据 | 
 |  |  |       int OnPreRetrieve() | 
 |  |  |       { | 
 |  |  |          int hItem = tv_folder.GetSelectedItem(); | 
 |  |  |          if (hItem <= 0) return 1; | 
 |  |  |          HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |          if (!hItem ) return 1; | 
 |  |  |  | 
 |  |  |          //int    hCursor = xutil::SetCursorWait(); | 
 |  |  |          msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); | 
 |  |  |          string name = e.getAttribute("name"); | 
 |  |  |          KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |          xstring name = e.getAttribute(L"name"); | 
 |  |  |          xml x = 0; | 
 |  |  |          string parentid = ""; | 
 |  |  |          if (name != "部门结构") | 
 |  |  |             parentid = e.selectSingleNode("adid").text; | 
 |  |  |          xstring parentid = L""; | 
 |  |  |          if (name != L"部门结构") | 
 |  |  |             parentid = e.selectSingleNode(L"adid").text(); | 
 |  |  |          trace(parentid); | 
 |  |  |          x = ViewObject::RetrieveData(myDataUrl, "parentid", parentid); | 
 |  |  |          x = ViewObject::RetrieveData(myDataUrl, L"parentid", parentid); | 
 |  |  |          if (x) | 
 |  |  |          { | 
 |  |  |             //trace(x.GetXml()); | 
 |  |  |             //trace(x.xml()); | 
 |  |  |             dw_list.Retrieve(x); | 
 |  |  |             dw_list.Redraw(); | 
 |  |  |          } | 
 |  |  |          else { | 
 |  |  |             dw_list.ResetEx(); | 
 |  |  |             dw_list.Reset(); | 
 |  |  |             dw_list.Redraw(); | 
 |  |  |          } | 
 |  |  |          dw_list.SetReadOnly(true); | 
 |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int OnTreeSelChanged(ref TNotifyEvent evt, int p) | 
 |  |  |       int OnTreeSelChanged(TEvent* evt, int p) | 
 |  |  |       { | 
 |  |  |          if (changeddlb) | 
 |  |  |             return 1; | 
 |  |  |          int hItem = tv_folder.GetSelectedItem(); | 
 |  |  |          if (hItem <= 0) | 
 |  |  |          HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |          if (!hItem) | 
 |  |  |             return 1; | 
 |  |  |          int child = tv_folder.GetChildItem(hItem); | 
 |  |  |          HTREEITEM child = tv_folder.GetChildItem(hItem); | 
 |  |  |          if (!child) { | 
 |  |  |             int    hCursor = xutil::SetCursorWait(); | 
 |  |  |             msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); | 
 |  |  |             if (!e.getAttribute("name")) { | 
 |  |  |                string adid = e.selectSingleNode("adid").text; | 
 |  |  |                string parentid = adid; | 
 |  |  |             HCURSOR    hCursor = xutil::SetCursorWait(); | 
 |  |  |             KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |             if (!e.getAttribute(L"name")) { | 
 |  |  |                xstring adid = e.selectSingleNode(L"adid").text(); | 
 |  |  |                xstring parentid = adid; | 
 |  |  |                ExpandFolderItem(hItem, parentid); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //焦点激活处理函数 | 
 |  |  |       int OnSetFocus(ref TEvent evt, int param) | 
 |  |  |       int OnSetFocus(TEvent* evt, LPARAM p) | 
 |  |  |       { | 
 |  |  |          //重置工具条 | 
 |  |  |          SetAgent(); | 
 |  |  | 
 |  |  |  | 
 |  |  |       int OnAdd() | 
 |  |  |       { | 
 |  |  |          int hItem = tv_folder.GetSelectedItem(); | 
 |  |  |          if (hItem <= 0) | 
 |  |  |          HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |          if (!hItem ) | 
 |  |  |             return 1; | 
 |  |  |          int hCursor = xutil::SetCursorWait(); | 
 |  |  |          msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); | 
 |  |  |          string parentid = "";//父级id | 
 |  |  |          if (!e.getAttribute("name")) | 
 |  |  |             parentid = e.selectSingleNode("adid").text; | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          arg.AddArg("parentid", parentid); | 
 |  |  |          OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int)); | 
 |  |  |          HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |          KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |          xstring parentid = L"";//父级id | 
 |  |  |          if (!e.getAttribute(L"name")) | 
 |  |  |             parentid = e.selectSingleNode(L"adid").text(); | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"parentid", parentid); | 
 |  |  |          OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg); | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 
 |  |  |          if(hItem <=0) | 
 |  |  |             return 1; | 
 |  |  |          int hCursor = xutil::SetCursorWait(); | 
 |  |  |          msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); | 
 |  |  |          KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); | 
 |  |  |  | 
 |  |  |          if(e.getAttribute("name")) | 
 |  |  |          if(e.getAttribute(L"name")) | 
 |  |  |             return 1;*/ | 
 |  |  |  | 
 |  |  |          int row = dw_list.GetRow(); | 
 |  |  |          if (row < 1) | 
 |  |  |             return 1; | 
 |  |  |          string parentid = "", adid = ""; | 
 |  |  |          /*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); | 
 |  |  |          adid = ele.selectSingleNode("adid").text;*/ | 
 |  |  |          adid = dw_list.GetItemString(row, "adid"); | 
 |  |  |          parentid = dw_list.GetItemString(row, "parentid"); | 
 |  |  |          xstring parentid = L"", adid = L""; | 
 |  |  |          /*KXMLDOMElement ele = dw_list.GetRowElement(row); | 
 |  |  |          adid = ele.selectSingleNode(L"adid").text();*/ | 
 |  |  |          adid = dw_list.GetItemString(row, L"adid"); | 
 |  |  |          parentid = dw_list.GetItemString(row, L"parentid"); | 
 |  |  |  | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          /*string parentid = "", adid = "";//父级id | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          /*xstring parentid = L"", adid = L"";//父级id | 
 |  |  |  | 
 |  |  |          if(!e.getAttribute("name")){ | 
 |  |  |          if(!e.getAttribute(L"name")){ | 
 |  |  |  | 
 |  |  |             parentid = e.selectSingleNode("adid").text; | 
 |  |  |             adid = e.selectSingleNode("adid").text; | 
 |  |  |             parentid = e.selectSingleNode(L"adid").text(); | 
 |  |  |             adid = e.selectSingleNode(L"adid").text(); | 
 |  |  |          }*/ | 
 |  |  |          arg.AddArg("parentid", parentid); | 
 |  |  |          arg.AddArg("adid", adid); | 
 |  |  |          OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int)); | 
 |  |  |          arg.AddArg(L"parentid", parentid); | 
 |  |  |          arg.AddArg(L"adid", adid); | 
 |  |  |          OpenWindow(L"dev:xpage[AdministrativeDepartmentFolder.vx]",arg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  | 
 |  |  |          if(hItem <=0) return 1; | 
 |  |  |  | 
 |  |  |          int    hCursor = xutil::SetCursorWait(); | 
 |  |  |          msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); | 
 |  |  |          string name = e.getAttribute("name"); | 
 |  |  |          string adid = ""; | 
 |  |  |          if(name != "部门结构") | 
 |  |  |             adid = e.selectSingleNode("adid").text;*/ | 
 |  |  |          KXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); | 
 |  |  |          xstring name = e.getAttribute(L"name"); | 
 |  |  |          xstring adid = L""; | 
 |  |  |          if(name != L"部门结构") | 
 |  |  |             adid = e.selectSingleNode(L"adid").text();*/ | 
 |  |  |  | 
 |  |  |          int row = dw_list.GetRow(); | 
 |  |  |          if (row < 1) | 
 |  |  |             return 1; | 
 |  |  |          string adid = ""; | 
 |  |  |          /*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); | 
 |  |  |          adid = ele.selectSingleNode("adid").text;*/ | 
 |  |  |          adid = dw_list.GetItemString(row, "adid"); | 
 |  |  |          xstring adid = L""; | 
 |  |  |          /*KXMLDOMElement ele = dw_list.GetRowElement(row); | 
 |  |  |          adid = ele.selectSingleNode(L"adid").text();*/ | 
 |  |  |          adid = dw_list.GetItemString(row, L"adid"); | 
 |  |  |  | 
 |  |  |          xml x = new xml; | 
 |  |  |          x.setNativePointer(xml::CreateInstance()); | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          arg.AddArg("adid", adid); | 
 |  |  |          if (getUrl("/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1) | 
 |  |  |          xml x ; | 
 |  |  | 			 | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"adid", adid); | 
 |  |  |          if (getUrl(L"/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1) | 
 |  |  |          { | 
 |  |  |             string error = x.GetXmlDoc().text; | 
 |  |  |             alert("err:" + error); | 
 |  |  |             xstring error = x.text(); | 
 |  |  |             alert(L"err:" + error); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          alert(x.GetXmlDoc().text); | 
 |  |  |          alert(x.text()); | 
 |  |  |          dw_list.DeleteRow(row); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令发布函数 | 
 |  |  |       int OnCmdDispatch(string comdid) | 
 |  |  |       int OnCmdDispatch(xstring comdid) | 
 |  |  |       { | 
 |  |  |          if (comdid == "xmUpdate") | 
 |  |  |          if (comdid == L"xmUpdate") | 
 |  |  |             return OnUpdate(); | 
 |  |  |          else if (comdid == "xmAdd") | 
 |  |  |          else if (comdid == L"xmAdd") | 
 |  |  |             return OnAdd(); | 
 |  |  |          else if (comdid == "xmDelete") | 
 |  |  |          else if (comdid == L"xmDelete") | 
 |  |  |             return OnDelete(); | 
 |  |  |          else if (comdid == "xmRefresh") | 
 |  |  |          else if (comdid == L"xmRefresh") | 
 |  |  |             return OnRefresh(); | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令处理事件 | 
 |  |  |       int OnXCommand(ref TXCommandEvent evt, int param) | 
 |  |  |       int OnXCommand(TEvent* evt, LPARAM p) | 
 |  |  |       { | 
 |  |  |          return OnCmdDispatch(evt.pStrID); | 
 |  |  |          return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int OnAttachEvent() | 
 |  |  |       { | 
 |  |  |          AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //树选择 | 
 |  |  |          AttachEvent("tv_folder", "TVN_ITEMEXPANDING", OnTreeExpanding); //树展开 | 
 |  |  |          AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ViewAdministrativeDepartmentList::OnTreeSelChanged); //树选择 | 
 |  |  |          AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ViewAdministrativeDepartmentList::OnTreeExpanding); //树展开 | 
 |  |  |  | 
 |  |  |          //AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged); | 
 |  |  |          //AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb); | 
 |  |  |          //AttachEvent("cbx_datashow","CBN_SELCHANGE",OnSelectDataShowDdlb); | 
 |  |  |          //AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED",OnRowChanged); | 
 |  |  |          //AttachEvent(L"cbx_1",L"CBN_SELCHANGE",OnSelectDdlb); | 
 |  |  |          //AttachEvent(L"cbx_datashow",L"CBN_SELCHANGE",OnSelectDataShowDdlb); | 
 |  |  |  | 
 |  |  |          //绑定工具条点击事件 | 
 |  |  |          AttachEvent("WM_XCOMMAND", OnXCommand); | 
 |  |  |          AttachEvent(L"WM_XCOMMAND", (FEvent)&ViewAdministrativeDepartmentList::OnXCommand); | 
 |  |  |          //获取焦点事件,用于重置工具条 | 
 |  |  |          AttachEvent("WM_SETFOCUS", OnSetFocus); | 
 |  |  |          AttachEvent(L"WM_SETFOCUS", (FEvent)&ViewAdministrativeDepartmentList::OnSetFocus); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       /* | 
 |  |  |       //加载主体数据 | 
 |  |  |       int  OnRetrieve() | 
 |  |  |       { | 
 |  |  |          xml x = new xml; | 
 |  |  |          x.setNativePointer(xml::CreateInstance()); | 
 |  |  |          xaserverarg arg = new xaserverarg; | 
 |  |  |          arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |          //arg.AddArg("xxx","xxx"); | 
 |  |  |          xml x ; | 
 |  |  | 			 | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          //arg.AddArg(L"xxx",L"xxx"); | 
 |  |  |          if (getUrl(myDataUrl,arg.GetString(),x)!=1) | 
 |  |  |          { | 
 |  |  |             trace(x.GetXmlDoc().text); | 
 |  |  |             trace(x.text()); | 
 |  |  |             return -1; | 
 |  |  |          }else | 
 |  |  |          { | 
 |  |  | 
 |  |  |       */ | 
 |  |  |  | 
 |  |  |       //展开子文件 | 
 |  |  |       int  ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement) | 
 |  |  |       int  ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) | 
 |  |  |       { | 
 |  |  |          msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item"); | 
 |  |  |          int len = nlist.length; | 
 |  |  |          KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); | 
 |  |  |          int len = nlist.length(); | 
 |  |  |          for (int i = 0; i < len; i++) | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement e = nlist.item(i); | 
 |  |  |             string name = e.getAttribute("name"); | 
 |  |  |             string sImage = e.getAttribute("image"); | 
 |  |  |             string child = e.getAttribute("child"); | 
 |  |  |             KXMLDOMElement e = nlist.item(i); | 
 |  |  |             xstring name = e.getAttribute(L"name"); | 
 |  |  |             xstring sImage = e.getAttribute(L"image"); | 
 |  |  |             xstring child = e.getAttribute(L"child"); | 
 |  |  |             int image = 18; | 
 |  |  |             if (sImage) image = sImage.toInt(); | 
 |  |  |             int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image); | 
 |  |  |             if (child != "no") | 
 |  |  |             HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); | 
 |  |  |             if (child != L"no") | 
 |  |  |                tv_folder.SetItemChild(h, 1); | 
 |  |  |             ExpandChildFolder(h, e); | 
 |  |  |          } | 
 |  |  | 
 |  |  |       //初始化文件夹 | 
 |  |  |       int  InitialFolder() | 
 |  |  |       { | 
 |  |  |          msxml::IXMLDOMElement xframeElement = GetElement(); | 
 |  |  |          msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial"); | 
 |  |  |          KXMLDOMElement xframeElement = GetElement(); | 
 |  |  |          KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); | 
 |  |  |          if (e) | 
 |  |  |             ExpandChildFolder(0, e); | 
 |  |  |          return 1; | 
 |  |  | 
 |  |  |  | 
 |  |  |       int onload() | 
 |  |  |       { | 
 |  |  |          dw_list = GetControl("dw_list"); | 
 |  |  |          dw_list.openUrl("/sale/view/AdministrativeDepartment/template/adlist"); | 
 |  |  |          dw_list.SetColumnState("adid", false); | 
 |  |  |          dw_list.SetColumnState("parentid", false); | 
 |  |  |          dw_list = GetControl(L"dw_list"); | 
 |  |  |          dw_list.openUrl(L"/sale/view/AdministrativeDepartment/template/adlist"); | 
 |  |  |          dw_list.SetColumnState(L"adid", false); | 
 |  |  |          dw_list.SetColumnState(L"parentid", false); | 
 |  |  |  | 
 |  |  |          myDataUrl = "/sale/data/AdministrativeDepartment/ad_list"; | 
 |  |  |          urlTree = "/sale/data/AdministrativeDepartment/ad_sidelist"; | 
 |  |  |          tv_folder = GetControl("tv_folder"); | 
 |  |  |          myDataUrl = L"/sale/data/AdministrativeDepartment/ad_list"; | 
 |  |  |          urlTree = L"/sale/data/AdministrativeDepartment/ad_sidelist"; | 
 |  |  |          tv_folder = GetControl(L"tv_folder"); | 
 |  |  |          tv_folder.SetLineAtRoot(true); | 
 |  |  |          InitialFolder(); | 
 |  |  |          OnAttachEvent(); | 
 |  |  | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |    }; | 
 |  |  | ] | 
 |  |  |    }; |