|  |  | 
 |  |  | use "win.vl" | 
 |  |  | use "dev:vm[xdwgrid.vm]" | 
 |  |  | use "dev:vm[xdwtable.vm]" | 
 |  |  | use "pref.vl" | 
 |  |  | use "dev:vm[xml.vm]" | 
 |  |  | use "dev:vm[xaserverarg.vm]" | 
 |  |  | use "dev:vm[xaserver.vm]" | 
 |  |  | use "dev:vm[xutil.vm]" | 
 |  |  | use "frame.vl" | 
 |  |  | use "treeview.vm" | 
 |  |  | use "dev:code[HrEmployeex.vx]" | 
 |  |  | use "publiccode.vl" | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <wobject/xdouble.hpp> | 
 |  |  | #include <xcontrol/xlayersheet.hpp> | 
 |  |  |  | 
 |  |  | //unit vclient.vobject tpp | 
 |  |  | unit vbusiness.xpage | 
 |  |  | [ | 
 |  |  |    HrPersonSel is extend frame; | 
 |  |  |    about HrPersonSel | 
 |  |  |       [ | 
 |  |  |          field: | 
 |  |  |          [ | 
 |  |  |             HrEmployeex lw_obj; | 
 |  |  |             xdwgrid__   dw_list; | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  | #include "HrEmployeex.hpp" | 
 |  |  |  | 
 |  |  |             xnode__   m_agentNode;   //Agent Condition | 
 |  |  |             string   m_agentCond;   //Agent Node | 
 |  |  |             string   m_sTxt; | 
 |  |  |          ] | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  | class __declspec(dllexport) HrPersonSel : public xframe | 
 |  |  | { | 
 |  |  | public: | 
 |  |  |    HrEmployeex* lw_obj; | 
 |  |  |    xdwgrid   dw_list; | 
 |  |  |  | 
 |  |  |             method: | 
 |  |  |          [ | 
 |  |  |             int SetAgent() | 
 |  |  |             { | 
 |  |  |                string xfNodeAgentArea = "agentarea"; | 
 |  |  |                xnode__ anode = new xnode__; | 
 |  |  |                anode.setNativePointer(GetAgentNode(xfNodeAgentArea)); | 
 |  |  |                var xframeElement = GetElement(); | 
 |  |  |                var agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*"); | 
 |  |  |                if (agent) | 
 |  |  |                { | 
 |  |  |                   string s = agent.xml; | 
 |  |  |                   SetAgentNodeContent(anode, s); | 
 |  |  |                } | 
 |  |  |                return 1; | 
 |  |  |             } | 
 |  |  |    xnode   m_agentNode;   //Agent Condition | 
 |  |  |    xstring   m_agentCond;   //Agent Node | 
 |  |  |    xstring   m_sTxt; | 
 |  |  | public: | 
 |  |  |    HrPersonSel(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} | 
 |  |  | public: | 
 |  |  |    static HrPersonSel* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |    { | 
 |  |  |       HrPersonSel* pWin = new HrPersonSel(implPtr, (HWND)hWnd); | 
 |  |  |       return pWin; | 
 |  |  |    } | 
 |  |  |    int SetAgent() | 
 |  |  |    { | 
 |  |  |       xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |       xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |       if (m_agentNode) | 
 |  |  |       { | 
 |  |  |          SetAgentNode(anode, m_agentNode); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement xframeElement = GetElement(); | 
 |  |  |          KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*"); | 
 |  |  |          if (agent) | 
 |  |  |          { | 
 |  |  |             xstring s = agent.xml(); | 
 |  |  |             m_agentNode = SetAgentNode(anode, s); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |             //焦点激活处理函数 | 
 |  |  |             int OnSetFocus(ref TEvent evt, int param) | 
 |  |  |             int OnSetFocus(TEvent* evt, LPARAM param) | 
 |  |  |             { | 
 |  |  |                SetAgent(); | 
 |  |  |                //重置工具条 | 
 |  |  | 
 |  |  |  | 
 |  |  |             int  OnRetrieve() | 
 |  |  |             { | 
 |  |  |                control__ xc = new control__; | 
 |  |  |                xc.setNativePointer(this.GetControl("QueryTxt")); | 
 |  |  |                m_sTxt = xc.GetText() + ""; | 
 |  |  |                string query = "[MSSqlHrJob.xq]"; | 
 |  |  |                xml__ x = new xml__; | 
 |  |  |                x.setNativePointer(x.CreateInstance()); | 
 |  |  |                xaserverarg__ arg = new xaserverarg__; | 
 |  |  |                arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |                arg.AddArg("sTxt", m_sTxt); | 
 |  |  |                //if (xaserver__::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1 | 
 |  |  |                if (url::post("OrganizationStruct/select.Employee", arg.GetString(), x) != 1) | 
 |  |  |                xcontrol xc = GetControl(L"QueryTxt"); | 
 |  |  |                m_sTxt = xc.GetText() + L""; | 
 |  |  |                xstring query = L"[MSSqlHrJob.xq]"; | 
 |  |  |                xml x; | 
 |  |  |  | 
 |  |  |                xaserverarg arg; | 
 |  |  |  | 
 |  |  |                arg.AddArg(L"sTxt", m_sTxt); | 
 |  |  |                //if (xaserver::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1 | 
 |  |  |                if (xurl::post(L"OrganizationStruct/select.Employee", arg.GetString(), x) != 1) | 
 |  |  |                { | 
 |  |  |                   trace(x.GetXmlDoc().text); | 
 |  |  |                   trace(x.text()); | 
 |  |  |                   return -1; | 
 |  |  |                } | 
 |  |  |                else | 
 |  |  | 
 |  |  |  | 
 |  |  |             int OnOK() | 
 |  |  |             { | 
 |  |  |                xaserverarg__ arg = new xaserverarg__; | 
 |  |  |                arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |                arg = win__::GetParam(); | 
 |  |  |                arg.AddArg("comdid", "xmOk"); | 
 |  |  |                xaserverarg arg; | 
 |  |  |  | 
 |  |  |                arg =GetArg(); | 
 |  |  |                arg.AddArg(L"comdid", L"xmOk"); | 
 |  |  |                int row = dw_list.GetNextSelectRow(1); | 
 |  |  |                if (row < 1) | 
 |  |  |                { | 
 |  |  |                   alert("请选择人员!"); | 
 |  |  |                   alert(L"请选择人员!"); | 
 |  |  |                   return 1; | 
 |  |  |                } | 
 |  |  |                msxml::IXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |                trace(e.xml); | 
 |  |  |                string EmployeeID = e.selectSingleNode("EmployeeID").text + ""; | 
 |  |  |                string Name = e.selectSingleNode("Name").text + ""; | 
 |  |  |                arg.AddArg("EmployeeID", EmployeeID); | 
 |  |  |                arg.AddArg("Name", Name); | 
 |  |  |                KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |                trace(e.xml()); | 
 |  |  |                xstring EmployeeID = e.selectSingleNode(L"EmployeeID").text() + (xstring)L""; | 
 |  |  |                xstring Name = e.selectSingleNode(L"Name").text() + (xstring)L""; | 
 |  |  |                arg.AddArg(L"EmployeeID", EmployeeID); | 
 |  |  |                arg.AddArg(L"Name", Name); | 
 |  |  |                CloseWindow(); | 
 |  |  |                return 1; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //命令发布函数 | 
 |  |  |             int OnCmdDispatch(string comdid) | 
 |  |  |             int OnCmdDispatch(xstring comdid) | 
 |  |  |             { | 
 |  |  |                if (comdid == "xmOk") | 
 |  |  |                if (comdid == L"xmOk") | 
 |  |  |                   OnOK(); | 
 |  |  |                else if (comdid == "query") | 
 |  |  |                else if (comdid == L"query") | 
 |  |  |                { | 
 |  |  |                   OnRetrieve(); | 
 |  |  |                } | 
 |  |  |                else if (comdid == "xmCancel") | 
 |  |  |                else if (comdid == L"xmCancel") | 
 |  |  |                   CloseWindow(); | 
 |  |  |                return 0; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             //命令处理事件 | 
 |  |  |             int OnXCommand(ref TXCommandEvent evt, int param) | 
 |  |  |             int OnXCommand(TEvent* evt, LPARAM param) | 
 |  |  |             { | 
 |  |  |                return OnCmdDispatch(evt.pStrID); | 
 |  |  |                return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             int OnAttachEvent() | 
 |  |  |             { | 
 |  |  |                //绑定工具条点击事件 | 
 |  |  |                AttachEvent("WM_XCOMMAND", OnXCommand); | 
 |  |  |                AttachEvent(L"WM_XCOMMAND", (FEvent)&HrPersonSel::OnXCommand); | 
 |  |  |                //获取焦点事件,用于重置工具条 | 
 |  |  |                AttachEvent("WM_SETFOCUS", OnSetFocus); | 
 |  |  |                AttachEvent(L"WM_SETFOCUS", (FEvent)&HrPersonSel::OnSetFocus); | 
 |  |  |                return 1; | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |             int OnInitial() | 
 |  |  | 
 |  |  |  | 
 |  |  |             int onload() | 
 |  |  |             { | 
 |  |  |                dw_list = new xdwgrid__; | 
 |  |  |                dw_list.setNativePointer(this.GetControl("dw_list")); | 
 |  |  |                dw_list.openUrl("组织架构.vface/template/HrEmployee/PersonSel"); | 
 |  |  |                SetArg(); | 
 |  |  |                dw_list = new xdwgrid; | 
 |  |  |                dw_list.setNativePointer(GetControl(L"dw_list")); | 
 |  |  |                dw_list.openUrl(L"组织架构.vface/template/HrEmployee/PersonSel"); | 
 |  |  |                dw_list.SetSelectionMode(3); //3 | 
 |  |  |                dw_list.SetReadOnly(true); | 
 |  |  |  | 
 |  |  | 
 |  |  |  | 
 |  |  |                return 1; | 
 |  |  |             } | 
 |  |  |          ] | 
 |  |  |  | 
 |  |  |       ] | 
 |  |  | ] | 
 |  |  | }; |