|  |  | 
 |  |  | use "win.vl" | 
 |  |  | use "treeview.vm" | 
 |  |  | 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 "dev:code[pa.tpp]" | 
 |  |  | use "list.vl" | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <wobject/xdouble.hpp> | 
 |  |  | #include <xcontrol/xlayersheet.hpp> | 
 |  |  |  | 
 |  |  | unit vbusiness.xpage | 
 |  |  | [ | 
 |  |  |    SysUser is extend list; | 
 |  |  |    about SysUser | 
 |  |  |    [ | 
 |  |  | 		 | 
 |  |  |       method: | 
 |  |  |       [ | 
 |  |  |          treeview__ tv_usergroup; | 
 |  |  |          xdwgrid__ dw_user; | 
 |  |  |          xnode__   m_agentNode; | 
 |  |  |          string strJobID;			 | 
 |  |  |          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; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          //焦点激活处理函数 | 
 |  |  |          int OnSetFocus(ref TEvent evt,int param) | 
 |  |  |          { | 
 |  |  |             SetAgent(); | 
 |  |  |             //重置工具条 | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 				 | 
 |  |  |          int SetEntityData(param p) | 
 |  |  |          { | 
 |  |  |             xml__ x=new xml__;	 | 
 |  |  |             x.setNativePointer(x.CreateInstance()); | 
 |  |  |             xaserverarg__ arg = new xaserverarg__; | 
 |  |  |             arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |             string str = this.m_QueryTxt; | 
 |  |  |             //trace(ele.xml); | 
 |  |  |             //alert(str); | 
 |  |  |             arg.AddArg("guid",str); | 
 |  |  |             //trace(strJobID); | 
 |  |  |             if (xaserver__::ExecXQuery("","[list.SysUser.xq]",arg.GetString(),x) == 1) | 
 |  |  |             { | 
 |  |  |                dw_user.AcceptText();					 | 
 |  |  |                dw_user.Retrieve(x); | 
 |  |  |                dw_user.Redraw(); | 
 |  |  |             } | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int OnTreeSelChanged(ref TNotifyEvent evt,int p) | 
 |  |  |          { | 
 |  |  |             ref NMTREEVIEW nmtv = evt.pnmh; | 
 |  |  |             int hItem = nmtv.itemNew.hItem;	 | 
 |  |  | 			 | 
 |  |  |             int wid = tv_usergroup.GetId(); | 
 |  |  |             int hitem=treeview__::GetSelectedItem(wid); | 
 |  |  |             int rootItem = treeview__::GetRootItem(wid); | 
 |  |  |             //if (hItem <=0 || hItem == rootItem)  | 
 |  |  |             //   return 0;	 | 
 |  |  |             msxml::IXMLDOMElement ele = treeview__::GetItemData(wid,hitem); | 
 |  |  |             //trace("ok"); | 
 |  |  |             if (ele) | 
 |  |  |             {				 | 
 |  |  |                xml__ x=new xml__;	 | 
 |  |  |                x.setNativePointer(x.CreateInstance()); | 
 |  |  |                xaserverarg__ arg = new xaserverarg__; | 
 |  |  |                arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |                strJobID = ele.selectSingleNode("@JobID").text; | 
 |  |  |                //trace(ele.xml); | 
 |  |  |                //alert(strJobID); | 
 |  |  |                arg.AddArg("guid",strJobID); | 
 |  |  |                //trace(strJobID); | 
 |  |  |                if (xaserver__::ExecXQuery("","[list.SysUser.xq]",arg.GetString(),x) == 1) | 
 |  |  |                { | 
 |  |  |                   dw_user.AcceptText();					 | 
 |  |  |                   dw_user.Retrieve(x); | 
 |  |  |                   dw_user.Redraw(); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  | 				 | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  |          int xmImport() | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  | class __declspec(dllexport) SysUser : public listwin | 
 |  |  | { | 
 |  |  | public: | 
 |  |  |    xtreeview tv_usergroup; | 
 |  |  |    xdwgrid dw_user; | 
 |  |  |    xnode   m_agentNode; | 
 |  |  |    xstring strJobID; | 
 |  |  | public: | 
 |  |  |    SysUser(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} | 
 |  |  | public: | 
 |  |  |    static SysUser* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |    { | 
 |  |  |       SysUser* pWin = new SysUser(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) | 
 |  |  |          { | 
 |  |  | 				 | 
 |  |  |             int wid = tv_usergroup.GetId(); | 
 |  |  |             int hitem=treeview__::GetSelectedItem(wid); | 
 |  |  |             if (!hitem) | 
 |  |  |             { | 
 |  |  |                alert("请选择职位!"); | 
 |  |  |                return 0; | 
 |  |  |             } | 
 |  |  |             OpenWindow("dev:xpage[UserImport.vx]",this);						 | 
 |  |  |             //openUrl("系统用户.vface/xpage/SysUser/UserImport", this); | 
 |  |  |             return 1;		 | 
 |  |  |             xstring s = agent.xml(); | 
 |  |  |             m_agentNode = SetAgentNode(anode, s); | 
 |  |  |          } | 
 |  |  |          int OnSave() | 
 |  |  |          { | 
 |  |  |             xml__ x=new xml__; | 
 |  |  |             x.setNativePointer(x.CreateInstance());			 | 
 |  |  |             dw_user.DwUpdateAllToEx(x.GetXmlDoc()); | 
 |  |  |             xaserverarg__ arg = new xaserverarg__; | 
 |  |  |             arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |             arg.AddArg("content",x.GetXml()); | 
 |  |  |             arg.AddArg("dbmap","SysUser.dbmap"); | 
 |  |  |             if(getUrl("/sale/data/SysUser/SysUser",arg.GetString(),x)!=1) | 
 |  |  |             { | 
 |  |  |                //trace("error:"+x.GetXml()); | 
 |  |  |                alert("保存失败"); | 
 |  |  |             } | 
 |  |  |             else{ | 
 |  |  |                if(x.GetXmlDoc().selectSingleNode("erroe")) | 
 |  |  |                { | 
 |  |  |                   alert("保存出错2! "); | 
 |  |  |                   return 0;				 | 
 |  |  |                } | 
 |  |  |                //trace(x.GetXml()); | 
 |  |  |                dw_user.ResetUpdateStatus(); | 
 |  |  |                win__::MessageBox(GetHWND(),"保存成功!","提示",0);	 | 
 |  |  |             } | 
 |  |  | 				 | 
 |  |  | /*               arg.AddArg("xdata",x.GetXml()); | 
 |  |  |             //arg.AddArg("jobguid",strJobID); | 
 |  |  |             //trace(x.GetXml()); | 
 |  |  |             //trace(strJobID);				 | 
 |  |  |             //if (getUrl("/sale/data/SysUser/SysUser",arg.GetString(),x) != 1) | 
 |  |  |             //trace(xaserver__::ExecXAction(GetServerUrl(),"[SysUser.xa]",arg.GetString(),x)); | 
 |  |  |          if (xaserver__::ExecXAction(GetServerUrl(),"[SysUser.xa]",arg.GetString(),x)!=1)				 | 
 |  |  |             { | 
 |  |  |                //trace("error:"+x.GetXml()); | 
 |  |  |                alert("保存失败"); | 
 |  |  |             } | 
 |  |  |             else{ | 
 |  |  |                if(x.GetXmlDoc().selectSingleNode("ERROR")) | 
 |  |  |                { | 
 |  |  |                   alert("保存出错2! "); | 
 |  |  |                   return 0;				 | 
 |  |  |                } | 
 |  |  |                win__::MessageBox(GetHWND(),"保存成功!","提示",0);	 | 
 |  |  |             }*/ | 
 |  |  |             return 1; | 
 |  |  |          }				 | 
 |  |  |          int OnAddRow() | 
 |  |  |          { | 
 |  |  |             int wid = tv_usergroup.GetId(); | 
 |  |  |             int hitem=treeview__::GetSelectedItem(wid); | 
 |  |  |             if(hitem==0) | 
 |  |  |             { | 
 |  |  |                alert("请先选择职位类型!"); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                int row = dw_user.InsertRow(0); | 
 |  |  |                dw_user.SetItemString(row,"Status","Y");				 | 
 |  |  |             } | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int OnInsertRow() | 
 |  |  |          { | 
 |  |  |             int wid = tv_usergroup.GetId(); | 
 |  |  |             int hitem=treeview__::GetSelectedItem(wid); | 
 |  |  |             if(hitem==0) | 
 |  |  |             { | 
 |  |  |                alert("请先选择职位类型!"); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                int crow=dw_user.GetRow(); | 
 |  |  |                int row=dw_user.InsertRow(crow); | 
 |  |  |                dw_user.SetItemString(row,"Status","Y");				 | 
 |  |  |             } | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |          int OnDeleteRow() | 
 |  |  |          { | 
 |  |  |             int row=dw_user.GetRow(); | 
 |  |  |             dw_user.DeleteRow(row); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 				 | 
 |  |  |          int OnJobType() | 
 |  |  |          { | 
 |  |  |             openUrl("组织架构.vface/worknode/Hr/HrJob"); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 				 | 
 |  |  |          int OnClicked(ref TNotifyEvent evt,int p) | 
 |  |  |          {	 | 
 |  |  |             ref DWNMHDR  hdr = evt.pnmh;				 | 
 |  |  |             int row = hdr.row; | 
 |  |  |             int col=hdr.col ; | 
 |  |  |             string colname=dw_user.GetColumnName(col); | 
 |  |  |             msxml::IXMLDOMElement xrow = dw_user.GetRowElement(row); | 
 |  |  |             string BindComputer=xrow.selectSingleNode("BindComputer").text;			 | 
 |  |  |             xaserverarg__ arg = new xaserverarg__; | 
 |  |  |             arg.setNativePointer(arg.CreateInstance()); | 
 |  |  |             if(BindComputer  != "" ) | 
 |  |  |             {	 | 
 |  |  |                arg.AddArg("BindComputer",BindComputer);					 | 
 |  |  |             } | 
 |  |  | 			 | 
 |  |  |             string comdid; | 
 |  |  |             if(colname=="BindComputer") | 
 |  |  |             {	 | 
 |  |  |                openUrl("系统用户.vface/xpage/SysUser/BindComputer/dialog", arg);		 | 
 |  |  |                comdid = arg.GetArgString("comdid");			 | 
 |  |  |                if(comdid=="ok") | 
 |  |  |                { | 
 |  |  |                   string strxml = arg.GetArgString("xml");					 | 
 |  |  |                   dw_user.SetItemDisplayString(row,colname,strxml);  | 
 |  |  |                   dw_user.SetItemString(row,colname,strxml); 					 | 
 |  |  |                   dw_user.Redraw(); | 
 |  |  |                } | 
 |  |  |             }				 | 
 |  |  |             return 1; | 
 |  |  |          }	 | 
 |  |  | 					 | 
 |  |  |          int OnResetPass() | 
 |  |  |          { | 
 |  |  |             xaserverarg__ arg = new xaserverarg__; | 
 |  |  |             int pt = arg.CreateInstance(); | 
 |  |  |             arg.setNativePointer(pt); | 
 |  |  | 					 | 
 |  |  |             int row = dw_user.GetRow(); | 
 |  |  |             if(row < 1) return 1; | 
 |  |  |             arg.AddArg("user", dw_user.GetItemString(row,"EmployeeNo")); | 
 |  |  | 				 | 
 |  |  |             OpenWindow("dev:xpage[ResetUserPassDlg.vx]",pt); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 					 | 
 |  |  |          int Onlog() | 
 |  |  |          { | 
 |  |  |             openUrl("/sale/view/SysUser/xpage/SysUser/SysLoginRecord"); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          //命令发布函数 | 
 |  |  |          int OnCmdDispatch(string comdid) | 
 |  |  |          { | 
 |  |  |             if (comdid =="Save")  OnSave(); | 
 |  |  |             else if (comdid =="AddRow") OnAddRow(); | 
 |  |  |             else if (comdid =="InsertRow") OnInsertRow(); | 
 |  |  |             else if (comdid =="DeleteRow") OnDeleteRow(); | 
 |  |  |             else if (comdid =="JobType") OnJobType(); | 
 |  |  |             else if (comdid=="xmImport") xmImport(); | 
 |  |  |             else if (comdid == "xmLog") Onlog(); | 
 |  |  |             else if(comdid=="_cb_grid_search") return GridSearchEx(); | 
 |  |  |             else if(comdid=="xmResetPass") return OnResetPass(); | 
 |  |  |             else if(comdid=="xmResetPassEx") OpenWindow("dev:xpage[SysForcePassward.vx]"); | 
 |  |  |             return 0;			 | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  | 			 | 
 |  |  |          //命令处理事件 | 
 |  |  |          int OnXCommand(ref TXCommandEvent evt,int param) | 
 |  |  |          { | 
 |  |  |             return OnCmdDispatch(evt.pStrID); | 
 |  |  |          } | 
 |  |  |    //焦点激活处理函数 | 
 |  |  |    int OnSetFocus(TEvent* evt, LPARAM param) | 
 |  |  |    { | 
 |  |  |       SetAgent(); | 
 |  |  |       //重置工具条 | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |          int OnAttachEvent() | 
 |  |  |          { | 
 |  |  |             //绑定工具条点击事件 | 
 |  |  |             AttachEvent("WM_XCOMMAND",OnXCommand); | 
 |  |  |             //获取焦点事件,用于重置工具条 | 
 |  |  |             AttachEvent("WM_SETFOCUS",OnSetFocus); | 
 |  |  |             //获得树的选择事件 | 
 |  |  |             AttachEvent("tv_usergroup", "TVN_SELCHANGED",OnTreeSelChanged); | 
 |  |  |             //AttachEvent("dw_user","DWV_ITEMBEINGEDIT",OnClicked);					 | 
 |  |  |             AttachEvent("dw_user","DWV_DOUBLECLICKED",OnClicked);					 | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int OnInitial() | 
 |  |  |          { | 
 |  |  |             SetAgent(); | 
 |  |  |    int SetEntityData(xaserverarg arg) | 
 |  |  |    { | 
 |  |  |       xml x; | 
 |  |  |  | 
 |  |  |             OnAttachEvent(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          int onload() | 
 |  |  |       //xaserverarg arg; | 
 |  |  |  | 
 |  |  |       xstring str = m_QueryTxt; | 
 |  |  |       //trace(ele.xml); | 
 |  |  |       //alert(str); | 
 |  |  |       arg.AddArg(L"guid", str); | 
 |  |  |       //trace(strJobID); | 
 |  |  |       if (xaserver::ExecXQuery(L"", L"[list.SysUser.xq]", arg.GetString(), x) == 1) | 
 |  |  |       { | 
 |  |  |          dw_user.AcceptText(); | 
 |  |  |          dw_user.Retrieve(x); | 
 |  |  |          dw_user.Redraw(); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnTreeSelChanged(TEvent* evt, LPARAM p) | 
 |  |  |    { | 
 |  |  |       NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; | 
 |  |  |  | 
 |  |  |       HTREEITEM hItem = nmtv.itemNew.hItem; | 
 |  |  |  | 
 |  |  |       //int wid = tv_usergroup.GetId(); | 
 |  |  |       HTREEITEM hitem = tv_usergroup.GetSelectedItem(); | 
 |  |  |       HTREEITEM rootItem = tv_usergroup.GetRootItem(); | 
 |  |  |       //if (hItem <=0 || hItem == rootItem)  | 
 |  |  |       //   return 0;	 | 
 |  |  |       KXMLDOMElement ele = tv_usergroup.GetItemData(hitem); | 
 |  |  |       //trace(L"ok"); | 
 |  |  |       if (ele) | 
 |  |  |       { | 
 |  |  |          xml x; | 
 |  |  |  | 
 |  |  |          xaserverarg arg; | 
 |  |  |  | 
 |  |  |          strJobID = ele.selectSingleNode(L"@JobID").text(); | 
 |  |  |          //trace(ele.xml); | 
 |  |  |          //alert(strJobID); | 
 |  |  |          arg.AddArg(L"guid", strJobID); | 
 |  |  |          //trace(strJobID); | 
 |  |  |          if (xaserver::ExecXQuery(L"", L"[list.SysUser.xq]", arg.GetString(), x) == 1) | 
 |  |  |          { | 
 |  |  |             m_agentNode = new xnode__; | 
 |  |  | 				 | 
 |  |  |             tv_usergroup =  new treeview__; | 
 |  |  |             tv_usergroup.setNativePointer(this.GetControl("tv_usergroup"));			 | 
 |  |  |             dw_user =  new xdwgrid__; | 
 |  |  |             dw_user.setNativePointer(this.GetControl("dw_user"));				 | 
 |  |  |             dw_user.SetDataObject(GetServerUrl(),"dev:sheet[SysUser.tpl/UserList]");	 | 
 |  |  |             dw_user.SetReadOnly(true);		 | 
 |  |  |             dw_user.SetSelectionMode(1); | 
 |  |  |  | 
 |  |  |             OnInitial(); | 
 |  |  |             int wid = tv_usergroup.GetId(); | 
 |  |  |             int root = treeview__::GetRootItem(wid);		 | 
 |  |  |             treeview__::ExpandItem(wid,root); | 
 |  |  |  | 
 |  |  |             xml__ x=new xml__; | 
 |  |  |             x.setNativePointer(xml__::CreateInstance());				 | 
 |  |  |             x.LoadXml("<Config/>"); | 
 |  |  |             this.m_configDoc = x.GetXmlDoc(); | 
 |  |  |             rowSearch("系统用户.vface/template/SysUser/list"); | 
 |  |  |             GridSearchEx(); | 
 |  |  | 				 | 
 |  |  |             return 1; | 
 |  |  |             dw_user.AcceptText(); | 
 |  |  |             dw_user.Retrieve(x); | 
 |  |  |             dw_user.Redraw(); | 
 |  |  |          } | 
 |  |  |       ] | 
 |  |  | 		 | 
 |  |  |    ] | 
 |  |  | ] | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int xmImport() | 
 |  |  |    { | 
 |  |  |  | 
 |  |  |       //int wid = tv_usergroup.GetId(); | 
 |  |  |       HTREEITEM hitem = tv_usergroup.GetSelectedItem(); | 
 |  |  |       if (!hitem) | 
 |  |  |       { | 
 |  |  |          alert(L"请选择职位!"); | 
 |  |  |          return 0; | 
 |  |  |       } | 
 |  |  |       OpenWindow(L"dev:xpage[UserImport.vx]",(LPARAM)this); | 
 |  |  |       //openUrl(L"系统用户.vface/xpage/SysUser/UserImport", this); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int OnSave() | 
 |  |  |    { | 
 |  |  |       xml x; | 
 |  |  |  | 
 |  |  |       dw_user.DwUpdateAllToEx(x); | 
 |  |  |       xaserverarg arg; | 
 |  |  |  | 
 |  |  |       arg.AddArg(L"content", x.xml()); | 
 |  |  |       arg.AddArg(L"dbmap", L"SysUser.dbmap"); | 
 |  |  |       if (getUrl(L"/sale/data/SysUser/SysUser", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          //trace(L"error:"+x.xml()); | 
 |  |  |          alert(L"保存失败"); | 
 |  |  |       } | 
 |  |  |       else { | 
 |  |  |          if (x.selectSingleNode(L"erroe")) | 
 |  |  |          { | 
 |  |  |             alert(L"保存出错2! "); | 
 |  |  |             return 0; | 
 |  |  |          } | 
 |  |  |          //trace(x.xml()); | 
 |  |  |          dw_user.ResetUpdateStatus(); | 
 |  |  |          MessageBox(GetHWND(), L"保存成功!", L"提示", 0); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       /*               arg.AddArg(L"xdata",x.xml()); | 
 |  |  |                   //arg.AddArg(L"jobguid",strJobID); | 
 |  |  |                   //trace(x.xml()); | 
 |  |  |                   //trace(strJobID); | 
 |  |  |                   //if (getUrl(L"/sale/data/SysUser/SysUser",arg.GetString(),x) != 1) | 
 |  |  |                   //trace(xaserver::ExecXAction(GetServerUrl(),L"[SysUser.xa]",arg.GetString(),x)); | 
 |  |  |                if (xaserver::ExecXAction(GetServerUrl(),L"[SysUser.xa]",arg.GetString(),x)!=1) | 
 |  |  |                   { | 
 |  |  |                      //trace(L"error:"+x.xml()); | 
 |  |  |                      alert(L"保存失败"); | 
 |  |  |                   } | 
 |  |  |                   else{ | 
 |  |  |                      if(x.selectSingleNode(L"ERROR")) | 
 |  |  |                      { | 
 |  |  |                         alert(L"保存出错2! "); | 
 |  |  |                         return 0; | 
 |  |  |                      } | 
 |  |  |                      MessageBox(GetHWND(),L"保存成功!",L"提示",0); | 
 |  |  |                   }*/ | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int OnAddRow() | 
 |  |  |    { | 
 |  |  |       //int wid = tv_usergroup.GetId(); | 
 |  |  |       HTREEITEM hitem = tv_usergroup.GetSelectedItem(); | 
 |  |  |       if (hitem == 0) | 
 |  |  |       { | 
 |  |  |          alert(L"请先选择职位类型!"); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          int row = dw_user.InsertRow(0); | 
 |  |  |          dw_user.SetItemString(row, L"Status", L"Y"); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnInsertRow() | 
 |  |  |    { | 
 |  |  |       //int wid = tv_usergroup.GetId(); | 
 |  |  |       HTREEITEM hitem = tv_usergroup.GetSelectedItem(); | 
 |  |  |       if (hitem == 0) | 
 |  |  |       { | 
 |  |  |          alert(L"请先选择职位类型!"); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          int crow = dw_user.GetRow(); | 
 |  |  |          int row = dw_user.InsertRow(crow); | 
 |  |  |          dw_user.SetItemString(row, L"Status", L"Y"); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnDeleteRow() | 
 |  |  |    { | 
 |  |  |       int row = dw_user.GetRow(); | 
 |  |  |       dw_user.DeleteRow(row); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnJobType() | 
 |  |  |    { | 
 |  |  |       openUrl(L"组织架构.vface/worknode/Hr/HrJob"); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnClicked(TEvent* evt, LPARAM p) | 
 |  |  |    { | 
 |  |  |       DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; | 
 |  |  |       int row = hdr.row; | 
 |  |  |       int col = hdr.col; | 
 |  |  |       xstring colname = dw_user.GetColumnName(col); | 
 |  |  |       KXMLDOMElement xrow = dw_user.GetRowElement(row); | 
 |  |  |       xstring BindComputer = xrow.selectSingleNode(L"BindComputer").text(); | 
 |  |  |       xaserverarg arg; | 
 |  |  |  | 
 |  |  |       if (BindComputer != L"") | 
 |  |  |       { | 
 |  |  |          arg.AddArg(L"BindComputer", BindComputer); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       xstring comdid; | 
 |  |  |       if (colname == L"BindComputer") | 
 |  |  |       { | 
 |  |  |          openUrl(L"系统用户.vface/xpage/SysUser/BindComputer/dialog", arg); | 
 |  |  |          comdid = arg.GetArgString(L"comdid"); | 
 |  |  |          if (comdid == L"ok") | 
 |  |  |          { | 
 |  |  |             xstring strxml = arg.GetArgString(L"xml"); | 
 |  |  |             dw_user.SetItemDisplayString(row, colname.c_str(), strxml); | 
 |  |  |             dw_user.SetItemString(row, colname.c_str(), strxml); | 
 |  |  |             dw_user.Redraw(); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnResetPass() | 
 |  |  |    { | 
 |  |  |       xaserverarg arg; | 
 |  |  |  | 
 |  |  |  | 
 |  |  |       int row = dw_user.GetRow(); | 
 |  |  |       if (row < 1) return 1; | 
 |  |  |       arg.AddArg(L"user", dw_user.GetItemString(row, L"EmployeeNo")); | 
 |  |  |  | 
 |  |  |       OpenWindow(L"dev:xpage[ResetUserPassDlg.vx]", arg); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int Onlog() | 
 |  |  |    { | 
 |  |  |       openUrl(L"/sale/view/SysUser/xpage/SysUser/SysLoginRecord"); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    //命令发布函数 | 
 |  |  |    int OnCmdDispatch(xstring comdid) | 
 |  |  |    { | 
 |  |  |       if (comdid == L"Save")  OnSave(); | 
 |  |  |       else if (comdid == L"AddRow") OnAddRow(); | 
 |  |  |       else if (comdid == L"InsertRow") OnInsertRow(); | 
 |  |  |       else if (comdid == L"DeleteRow") OnDeleteRow(); | 
 |  |  |       else if (comdid == L"JobType") OnJobType(); | 
 |  |  |       else if (comdid == L"xmImport") xmImport(); | 
 |  |  |       else if (comdid == L"xmLog") Onlog(); | 
 |  |  |       else if (comdid == L"_cb_grid_search") return GridSearchEx(); | 
 |  |  |       else if (comdid == L"xmResetPass") return OnResetPass(); | 
 |  |  |       else if (comdid == L"xmResetPassEx") OpenWindow(L"dev:xpage[SysForcePassward.vx]"); | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |    //命令处理事件 | 
 |  |  |    int OnXCommand(TEvent* evt, LPARAM param) | 
 |  |  |    { | 
 |  |  |       return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAttachEvent() | 
 |  |  |    { | 
 |  |  |       //绑定工具条点击事件 | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", (FEvent)&SysUser::OnXCommand); | 
 |  |  |       //获取焦点事件,用于重置工具条 | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", (FEvent)&SysUser::OnSetFocus); | 
 |  |  |       //获得树的选择事件 | 
 |  |  |       AttachEvent(L"tv_usergroup", L"TVN_SELCHANGED", (FEvent)&SysUser::OnTreeSelChanged); | 
 |  |  |       //AttachEvent(L"dw_user",L"DWV_ITEMBEINGEDIT",OnClicked);					 | 
 |  |  |       AttachEvent(L"dw_user", L"DWV_DOUBLECLICKED", (FEvent)&SysUser::OnClicked); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnInitial() | 
 |  |  |    { | 
 |  |  |       SetAgent(); | 
 |  |  |  | 
 |  |  |       OnAttachEvent(); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int onload() | 
 |  |  |    { | 
 |  |  |       tv_usergroup = GetControl(L"tv_usergroup"); | 
 |  |  |       dw_user = new xdwgrid; | 
 |  |  |       dw_user.setNativePointer(GetControl(L"dw_user")); | 
 |  |  |       dw_user.SetDataObject(GetServerUrl(), L"dev:sheet[SysUser.tpl/UserList]"); | 
 |  |  |       dw_user.SetReadOnly(true); | 
 |  |  |       dw_user.SetSelectionMode(1); | 
 |  |  |  | 
 |  |  |       OnInitial(); | 
 |  |  |       //int wid = tv_usergroup.GetId(); | 
 |  |  |       HTREEITEM root = tv_usergroup.GetRootItem(); | 
 |  |  |       tv_usergroup.ExpandItem( root); | 
 |  |  |  | 
 |  |  |       //return 1; | 
 |  |  |  | 
 |  |  |       xml x; | 
 |  |  |       x.loadXML(L"<Config/>"); | 
 |  |  |       m_configDoc = x; | 
 |  |  |       rowSearch(L"系统用户.vface/template/SysUser/list"); | 
 |  |  |       GridSearchEx(); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  | }; |