|  |  | 
 |  |  | class SearchDlg :  public xframe | 
 |  |  |    { | 
 |  |  |       xnode   m_agentNode;   //Agent Condition | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  |  | 
 |  |  |       xcontrol sle_1; | 
 |  |  | 	 | 
 |  |  | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  |  | 
 |  |  | using xml = KXMLDOMDocument; | 
 |  |  |    class __declspec(dllexport) UserGroupShareWin : public xframe | 
 |  |  |    { | 
 |  |  |    public: | 
 |  |  |       xdwgrid   dw_list; | 
 |  |  |       xnode   m_agentNode;   //Agent Condition | 
 |  |  |    public: | 
 |  |  |       UserGroupShareWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} | 
 |  |  |    public: | 
 |  |  |       static UserGroupShareWin* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |       { | 
 |  |  |          UserGroupShareWin* pWin = new UserGroupShareWin(implPtr, (HWND)hWnd); | 
 |  |  |          return pWin; | 
 |  |  |       } | 
 |  |  |       int SetAgent() | 
 |  |  |       { | 
 |  |  |          string xfNodeAgentArea  = "agentarea"; | 
 |  |  |          xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |          xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |          if(m_agentNode) | 
 |  |  |          if (m_agentNode) | 
 |  |  |          { | 
 |  |  |             SetAgentNodeContent (anode,m_agentNode); | 
 |  |  |             SetAgentNode(anode, m_agentNode); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             msxml::IXMLDOMElement xframeElement =  GetElement(); | 
 |  |  |             msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); | 
 |  |  |             if(agent) | 
 |  |  |             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 OnSetFocus(ref TEvent evt,int param) | 
 |  |  |       int OnSetFocus(TEvent* evt, LPARAM param) | 
 |  |  |       { | 
 |  |  |          //重置工具条 | 
 |  |  |          //SetAgent(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  | 				 | 
 |  |  |       int OnOk() | 
 |  |  |       { | 
 |  |  |          if(GetParam()) | 
 |  |  |          { | 
 |  |  |             xaserverarg arg = GetParam(); | 
 |  |  |             arg.AddArg("text",GetControl("sl_search").GetText()); | 
 |  |  |             CloseWindow(); | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       //命令发布函数 | 
 |  |  |       int OnCmdDispatch(string comdid) | 
 |  |  |       int OnCmdDispatch(xstring comdid) | 
 |  |  |       { | 
 |  |  |          if(comdid=="xmCancel") | 
 |  |  |          if (comdid == L"xmClose") | 
 |  |  |          { | 
 |  |  |             CloseWindow(); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          else if(comdid=="xmOk") return OnOk(); | 
 |  |  |          if (comdid == L"xmSave") | 
 |  |  |          { | 
 |  |  |             return OnSave(); | 
 |  |  |          } | 
 |  |  |          if (comdid == L"xmMemberAdd" || comdid == L"xmAdd") | 
 |  |  |          { | 
 |  |  |             xaserverarg arg; | 
 |  |  | 				 | 
 |  |  |             xaserverarg parg = GetArg(); | 
 |  |  |             if (comdid == L"xmMemberAdd") | 
 |  |  |                OpenWindow(L"dev:xpage[UserGroupPersonSelect.vx]", arg); | 
 |  |  |             else | 
 |  |  |                OpenWindow(L"dev:xpage[UserGroupSelect.vx]", arg); | 
 |  |  |             if (arg.GetArgString(L"comdid") == L"xmOk") | 
 |  |  |             { | 
 |  |  |                xstring data = arg.GetArgString(L"data"); | 
 |  |  |                xml x; | 
 |  |  | 					 | 
 |  |  |                x.loadXML(data); | 
 |  |  |                KXMLDOMNodeList nodes = x.selectNodes(L"/root/item"); | 
 |  |  |                int len = nodes.length(); | 
 |  |  |                for (int i = 0; i < len; i++) | 
 |  |  |                { | 
 |  |  |                   dw_list.InsertRow(0); | 
 |  |  |                   int row = dw_list.GetRowCount(); | 
 |  |  |                   KXMLDOMElement ele = nodes.item(i); | 
 |  |  |  | 
 |  |  |                   dw_list.SetItemString(row, L"No", ele.getAttribute(L"No")); | 
 |  |  |                   dw_list.SetItemString(row, L"Name", ele.getAttribute(L"Name")); | 
 |  |  |  | 
 |  |  |                   if (comdid == L"xmMemberAdd") | 
 |  |  |                   { | 
 |  |  |                      dw_list.SetItemString(row, L"PersonID", ele.getAttribute(L"PersonID")); | 
 |  |  |                   } | 
 |  |  |                   else | 
 |  |  |                      dw_list.SetItemString(row, L"UserGroupID", ele.getAttribute(L"UserGroupID")); | 
 |  |  |  | 
 |  |  |                   dw_list.SetItemString(row, L"EntityID", parg.GetArgString(L"EntityID")); | 
 |  |  |                   dw_list.SetItemString(row, L"EntityName", parg.GetArgString(L"EntityName")); | 
 |  |  |                } | 
 |  |  |                dw_list.Redraw(); | 
 |  |  |             } | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          /* | 
 |  |  |          if(comdid==L"xmAdd") | 
 |  |  |          { | 
 |  |  |             xaserverarg arg; | 
 |  |  | 				 | 
 |  |  |             xaserverarg parg = GetParam(); | 
 |  |  |             OpenWindow(L"dev:xpage[UserGroupSelect.vx]",cast(arg as int)); | 
 |  |  |             if(arg.GetArgString(L"comdid")==L"xmOk") | 
 |  |  |             { | 
 |  |  |  | 
 |  |  |                xstring data = arg.GetArgString(L"data"); | 
 |  |  |                xml x; | 
 |  |  | 					 | 
 |  |  |                x.loadXML(data); | 
 |  |  |                KXMLDOMNodeList nodes = x.selectNodes(L"/root/item"); | 
 |  |  |                int len = nodes.length(); | 
 |  |  |                for(int i=0;i<len; i++) | 
 |  |  |                { | 
 |  |  |                   dw_list.InsertRow(0); | 
 |  |  |                   int row = dw_list.GetRowCount(); | 
 |  |  |                   KXMLDOMElement ele= nodes.item(i); | 
 |  |  |                   dw_list.SetItemString(row,L"NO",ele.getAttribute(L"NO")); | 
 |  |  |                   dw_list.SetItemString(row,L"Name",ele.getAttribute(L"Name")); | 
 |  |  |                   dw_list.SetItemString(row,L"UserGroupID",ele.getAttribute(L"UserGroupID")); | 
 |  |  |  | 
 |  |  |                   dw_list.SetItemString(row,L"EntityID",parg.GetArgString(L"EntityID")); | 
 |  |  |                   dw_list.SetItemString(row,L"EntityName",parg.GetArgString(L"EntityName")); | 
 |  |  |                } | 
 |  |  |                dw_list.Redraw(); | 
 |  |  |             } | 
 |  |  |             return 1; | 
 |  |  |          }*/ | 
 |  |  |          if (comdid == L"xmDelete") | 
 |  |  |          { | 
 |  |  |             dw_list.DeleteRow(0); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          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)&UserGroupShareWin::OnXCommand); | 
 |  |  |          //获取焦点事件,用于重置工具条 | 
 |  |  |          AttachEvent("WM_SETFOCUS",OnSetFocus); | 
 |  |  |       } | 
 |  |  | 	 | 
 |  |  |       int onload() | 
 |  |  |       { | 
 |  |  |          sle_1 = GetControl("sl_search"); | 
 |  |  |          int x = win32::GetWindowLong(sle_1.GetId(), -16); //GWL_STYLE | 
 |  |  |          x = x+ 0x0008; | 
 |  |  |          win32::SetWindowLong(sle_1.GetId(), -16,x);//sle_1是编辑窗口控件 | 
 |  |  | 			 | 
 |  |  |          OnAttachEvent(); | 
 |  |  |          if(GetParam()) | 
 |  |  |          { | 
 |  |  |             xaserverarg arg = GetParam(); | 
 |  |  |             GetControl("sl_search").SetText(arg.GetArgString("text")); | 
 |  |  |          } | 
 |  |  | 			 | 
 |  |  |          AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupShareWin::OnSetFocus); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int Send(xstring PersonID, xstring CName, xstring NO, xstring EntityID) | 
 |  |  |       { | 
 |  |  |          xaserverarg arg1 = GetArg(); | 
 |  |  |          xstring Name = arg1.GetArgString(L"EntityName"); | 
 |  |  |          xstring Subject = Name + L"已共享[" + CName + L"]"; | 
 |  |  |          xstring Category = Name + L"共享"; | 
 |  |  |          xstring Content = L""; | 
 |  |  |  | 
 |  |  |          xml x = ViewObject::RetrieveData(L"/sale/data/business/message/getUserNO", L"PersonID", PersonID); | 
 |  |  |          KXMLDOMNodeList nlist = x.selectNodes(L"//data/Item"); | 
 |  |  |          KXMLDOMElement xitem = nlist.item(0); | 
 |  |  |          xstring Reciever = xitem.selectSingleNode(L"userno").text(); | 
 |  |  |        | 
 |  |  |    }; | 
 |  |  |  | 
 |  |  |          /*alert(L"Category:"+Category + | 
 |  |  |                "\r\nReciever:"+Reciever + L"\r\nNo:"+NO + L"\r\nEntityID:"+EntityID + L"Subject:"+Subject+ | 
 |  |  |                "\r\nContent:"+Content); | 
 |  |  |          */ | 
 |  |  |          ViewObject::AddMessage(GetServerUrl(), Category, Reciever, NO, EntityID, Subject, Content); | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int SendNotice(xml content) | 
 |  |  |       { | 
 |  |  |          xaserverarg arg = GetArg(); | 
 |  |  |          xstring CName = arg.GetArgString(L"EntityName"); | 
 |  |  |          xstring EntityID = arg.GetArgString(L"EntityID"); | 
 |  |  |          xstring EntityNo = arg.GetArgString(L"EntityNo"); | 
 |  |  |  | 
 |  |  |          KXMLDOMNodeList nlist = content.selectNodes(L"//root/item[@update.new='1']"); | 
 |  |  |          int leng = nlist.length(); | 
 |  |  |          for (int i = 0; i < leng; i++) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xitem = nlist.item(i); | 
 |  |  |             xstring PersonID = xitem.selectSingleNode(L"PersonID").text(); | 
 |  |  |             xstring UserGroupID = xitem.selectSingleNode(L"UserGroupID").text(); | 
 |  |  |             xstring NO = xitem.selectSingleNode(L"NO").text(); | 
 |  |  |  | 
 |  |  |             if (PersonID != L"") | 
 |  |  |             { | 
 |  |  |                Send(PersonID, CName, EntityNo, EntityID); | 
 |  |  |             } | 
 |  |  |             if (UserGroupID != L"") | 
 |  |  |             { | 
 |  |  |                xml x = ViewObject::RetrieveData(L"/sale/data/business/message/getPersonIDByGroup", L"UserGroupID", UserGroupID); | 
 |  |  |                KXMLDOMNodeList nlist1 = x.selectNodes(L"//data/Item"); | 
 |  |  |                for (int j = 0; j < nlist1.length(); j++) | 
 |  |  |                { | 
 |  |  |                   KXMLDOMElement xitem1 = nlist1.item(j); | 
 |  |  |                   PersonID = xitem1.selectSingleNode(L"PersonID").text(); | 
 |  |  |                   Send(PersonID, CName, EntityNo, EntityID); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  | 				 | 
 |  |  |             //return 1; | 
 |  |  |          } | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int OnSave() | 
 |  |  |       { | 
 |  |  |          xml xs; | 
 |  |  | 			 | 
 |  |  |          dw_list.DwUpdateAllToEx(xs); | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          arg.AddArg(L"content", xs.xml()); | 
 |  |  |  | 
 |  |  |          xml x; | 
 |  |  | 			 | 
 |  |  |          if (xurl::get(L"/sale/data/UserGroup/update/entity", arg.GetString(), x) != 1) | 
 |  |  |          { | 
 |  |  |             xstring error = x.text(); | 
 |  |  |             alert(L"err:" + error); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             xstring str = x.documentElement().getAttribute(L"text"); | 
 |  |  |             if (str == L"true") | 
 |  |  |             { | 
 |  |  |                dw_list.ResetUpdateStatus(); | 
 |  |  |                xaserverarg arg_ = GetArg(); | 
 |  |  |                if (arg_.GetArgString(L"notify") == L"1") SendNotice(xs);//发送通知 | 
 |  |  |                alert(L"保存成功!"); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                alert(L"保存失败!"); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int  OnRetrieve() | 
 |  |  |       { | 
 |  |  |          xml x; | 
 |  |  | 			 | 
 |  |  |          xaserverarg arg; | 
 |  |  | 			 | 
 |  |  |          xaserverarg parg = GetArg(); | 
 |  |  |          arg.AddArg(L"EntityID", parg.GetArgString(L"EntityID")); | 
 |  |  |          if (getUrl(L"/sale/data/UserGroup/entity/list", arg.GetString(), x) != 1) | 
 |  |  |          { | 
 |  |  |             trace(x.text()); | 
 |  |  |             return -1; | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             dw_list.Retrieve(x); | 
 |  |  |             dw_list.Redraw(); | 
 |  |  |             dw_list.SetReadOnly(true); | 
 |  |  |          } | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       int onload() | 
 |  |  |       { | 
 |  |  |          SetArg(); | 
 |  |  |          dw_list = GetControl(L"dw_list"); | 
 |  |  |          dw_list.openUrl(L"/sale/view/UserGroup/template/entityusergrouplist"); | 
 |  |  |          dw_list.SetReadOnly(true); | 
 |  |  |  | 
 |  |  |          dw_list.SetColumnState(L"UserGroupID", false); | 
 |  |  |          dw_list.SetColumnState(L"EntityID", false); | 
 |  |  |          dw_list.SetColumnState(L"EntityName", false); | 
 |  |  |          dw_list.SetColumnState(L"PersonID", false); | 
 |  |  |  | 
 |  |  |          OnAttachEvent(); | 
 |  |  |  | 
 |  |  |          //SetAgent();	 | 
 |  |  |          if (GetWinParam()) | 
 |  |  |             OnRetrieve(); | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |    }; |