LiFan
2024-07-05 549b3fa73926b4c35043545921dba68d011c6f92
update
已修改9个文件
1374 ■■■■ 文件已修改
jrj/project/business/Public/GroupManagerList.cpp 229 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/SupplierUserGroupPersonSelect.cpp 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/UserGroupMaint.cpp 133 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/UserGroupPersonSelect.cpp 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/UserGroupPersonSelectEx.cpp 134 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/UserGroupSelect.cpp 131 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/UserGroupShare.cpp 281 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/UserGroupShareEx.cpp 132 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/search.dialog.cpp 66 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
jrj/project/business/Public/GroupManagerList.cpp
@@ -1,90 +1,249 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) GroupManagerList : public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
        xtreeview tv_folder;
    public:
        GroupManagerList(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static GroupManagerList* CreateInstance(void* implPtr, void* hWnd)
        {
            GroupManagerList* pWin = new GroupManagerList(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
            SetAgent();
            return 1;
        }
                
        int OnOk()
        int createSubTree(int wid, HTREEITEM h, KXMLDOMElement ele)
        {
            if(GetParam())
            KXMLDOMNodeList nlist = ele.selectNodes(L"item");
            int i;
            int s = nlist.length();
            if (s > 0)
                for (i = 0; i < s; i++)
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                CloseWindow();
                    KXMLDOMElement e = nlist.item(i);
                    xstring name = e.selectSingleNode(L"@name").text();
                    HTREEITEM hw = xtreeview::InsertChildItem(wid, h, name,e , 15);
                    createSubTree(wid, hw, e);
            }
            return 1;
        }
        int OnCreateTree()
        {
            int wid = tv_folder.GetId();
            while (xtreeview::GetRootItem(wid) > 0)
                xtreeview::DeleteItem(wid, xtreeview::GetRootItem(wid));
            xml x;
            x;
            xaserverarg arg;
            if (xurl::get(L"/sale/data/UserGroup/tree", L"", x) != 1)
            {
                alert(x.text());
                return -1;
            }
            KXMLDOMNodeList nlist = x.selectNodes(L"root/item");
            int len = nlist.length();
            if (len > 0)
            {
                int i;
                for (i = 0; i < len; i++)
                {
                    KXMLDOMElement e = nlist.item(i);
                    xstring name = e.selectSingleNode(L"@name").text();
                    int h = xtreeview::InsertChildItem(wid, 0, name, trust(e as int), 15);
                    createSubTree(wid, h, e);
                    xtreeview::ExpandItem(wid, h);
                }
                xtreeview::ExpandItem(wid, 0);
            }
            return 1;
        }
        //树选择
        int OnTreeSelChanged(TEvent* evt, LPARAM p)
        {
            NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
            HTREEITEM hItem = nmtv.itemNew.hItem;
            KXMLDOMElement e = xtreeview::GetItemData(tv_folder.GetId(), sItem);
            xstring UserGroupID = e.selectSingleNode(L"@guid").text();
            OnRetrieve(UserGroupID);
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmAdd")
            {
                CloseWindow();
                OpenWindow(L"dev:xpage[UserGroupMaint.vx]", 0);
                return 1;
            }
            else if(comdid=="xmOk") return OnOk();
            if (comdid == L"xmSave")
            {
                return OnSave();
            }
            if (comdid == L"xmMemberAdd")
            {
                HTREEITEM hItem = tv_folder.GetSelectedItem();
                if (hItem < 0) return 1;
                KXMLDOMElement e = tv_folder.GetItemData(hItem);
                xaserverarg arg;
                OpenWindow(L"dev:xpage[UserGroupPersonSelect.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"));
                        dw_list.SetItemString(row, L"PersonID", ele.getAttribute(L"PersonID"));
                        dw_list.SetItemString(row, L"UserGroupID", e.getAttribute(L"guid"));
                    }
                    dw_list.Redraw();
                }
                return 1;
            }
            return 0;
        }
        
        //命令处理事件
        int OnXCommand(ref TXCommandEvent evt,int param)
        int OnSave()
        {
            return OnCmdDispatch(evt.pStrID);
            xml x;
            dw_list.DwUpdateAllToEx(x);
            xaserverarg arg;
            arg.AddArg(L"content", x.xml());
            if (xurl::get(L"/sale/data/UserGroup/update", arg.GetString(), x) != 1)
            {
                xstring error = x.text();
                alert(L"err:" + error);
                return 1;
            }
            else
            {
                alert(x.xml());
                dw_list.ResetUpdateStatus();
            }
            return 1;
        }
        //命令处理事件
        int OnXCommand(TEvent* evt, LPARAM param)
        {
            return OnCmdDispatch(evt->xcommand.pStrID);
        }
        
        int OnAttachEvent()
        {
            //绑定工具条点击事件
            AttachEvent("WM_XCOMMAND",OnXCommand);
            AttachEvent(L"WM_XCOMMAND", (FEvent)&GroupManagerList::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&GroupManagerList::OnSetFocus);
            AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&GroupManagerList::OnTreeSelChanged); //树选择
        }
        int  OnRetrieve(xstring UserGroupID)
        {
            dw_list.Reset();
            xml x;
            xaserverarg arg;
            arg.AddArg(L"UserGroupID", UserGroupID);
            if (getUrl(L"/sale/data/UserGroup/member", arg.GetString(), x) != 1)
            {
                trace(x.text());
                return -1;
            }
            else
            {
                dw_list.Retrieve(x);
                dw_list.SetReadOnly(true);
                dw_list.Redraw();
            }
            return 1;
        }
    
        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是编辑窗口控件
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/UserGroup/template/member");
            tv_folder = GetControl(L"tv_folder");
            dw_list.SetReadOnly(true);
            dw_list.SetColumnState(L"UserGroupID", false);
            dw_list.SetColumnState(L"PersonID", false);
            
            OnCreateTree();
            OnAttachEvent();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            
            return 1;
        }
        
        int onloaded()
        {
            SetAgent();
            return 1;
        }
    };
jrj/project/business/Public/SupplierUserGroupPersonSelect.cpp
@@ -1,90 +1,150 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) SupplierUserGroupPersonSelect : public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
        xstring    m_sTxt;
    public:
        SupplierUserGroupPersonSelect(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static SupplierUserGroupPersonSelect* CreateInstance(void* implPtr, void* hWnd)
        {
            SupplierUserGroupPersonSelect* pWin = new SupplierUserGroupPersonSelect(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
            //重置工具条
            return 1;
        }
                
        int OnOk()
        int  OnRetrieve()
        {
            if(GetParam())
            xcontrol xc = GetControl(L"QueryTxt");
            m_sTxt = xc.GetText() + L"";
            xml x;
            xaserverarg arg;
            arg.AddArg(L"sTxt", m_sTxt);
            if (xurl::post(L"OrganizationStruct/Supplier.select.Person", arg.GetString(), x) != 1)
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                CloseWindow();
                trace(x.text());
                return -1;
            }
            else
            {
                dw_list.Retrieve(x);
                dw_list.Redraw();
                dw_list.SetReadOnly(true);
            }
            return 1;
        }
        int OnOK()
        {
            xaserverarg arg = GetArg();
            arg.AddArg(L"comdid", L"xmOk");
            int row = dw_list.GetNextSelectRow(1);
            if (row < 1)
            {
                alert(L"请选择人员!");
                return 1;
            }
            xstring str = L"<root>";
            while (row > 0 && row <= dw_list.GetRowCount())
            {
                KXMLDOMElement e = dw_list.GetRowElement(row);
                xstring PersonID = e.selectSingleNode(L"PersonID").text() + xstring(L"");
                xstring Name = e.selectSingleNode(L"Name").text() + xstring(L"");
                xstring No = e.selectSingleNode(L"EmployeeNo").text() + xstring(L"");
                str += L"<item PersonID='" + PersonID + L"' Name='" + Name + L"' No='" + No + L"'/>";
                row = dw_list.GetNextSelectRow(row + 1);
            }
            str += L"</root>";
            arg.AddArg(L"data", str);
            CloseWindow();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmOk")
                OnOK();
            else if (comdid == L"query")
            {
                CloseWindow();
                return 1;
                OnRetrieve();
            }
            else if(comdid=="xmOk") return OnOk();
            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)&SupplierUserGroupPersonSelect::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&SupplierUserGroupPersonSelect::OnSetFocus);
        }
        int OnInitial()
        {
            //SetAgent();
            OnAttachEvent();
            return 1;
        }
    
        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是编辑窗口控件
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"组织架构.vface/template/HrEmployee/PersonSel");
            dw_list.SetSelectionMode(3);
            dw_list.SetReadOnly(true);
            
            OnAttachEvent();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            OnInitial();
            OnRetrieve();
            
            return 1;
        }
    };
jrj/project/business/Public/UserGroupMaint.cpp
@@ -1,90 +1,157 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) UserGroupMaintWin : public xframe
    {
    public:
        xdwtable    dw_detail;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
    public:
        UserGroupMaintWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static UserGroupMaintWin* CreateInstance(void* implPtr, void* hWnd)
        {
            UserGroupMaintWin* pWin = new UserGroupMaintWin(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
            SetAgent();
            return 1;
        }
                
        int OnOk()
        int OnSave()
        {
            if(GetParam())
            xml x;
            dw_detail.DwUpdateAllTo(x);
            xaserverarg arg;
            arg.AddArg(L"content", x.xml());
            if (xurl::get(L"/sale/data/UserGroup/update", arg.GetString(), x) != 1)
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                CloseWindow();
                xstring error = x.text();
                alert(L"err:" + error);
                return 1;
            }
            else
            {
                xstring str = x.documentElement().getAttribute(L"text");
                if (str == L"true")
                {
                    dw_detail.ResetUpdateStatus();
                    alert(L"保存成功!");
                }
                else
                {
                    alert(L"保存失败!");
                }
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmCancel")
            {
                CloseWindow();
                return 1;
            }
            else if(comdid=="xmOk") return OnOk();
            else if (comdid == L"xmSave")
            {
                OnSave();
                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)&UserGroupMaintWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupMaintWin::OnSetFocus);
        }
        /*
        int  OnRetrieve()
        {
            xml x;
            xaserverarg arg;
            arg.AddArg(L"xxx",L"xxx");
            if (getUrl(L"",arg.GetString(),x)!=1)
            {
                trace(x.text());
                return -1;
            }else
            {
                //dw_list.Retrieve(x);
                //dw_list.Redraw();
            }
            return 1;
        }
        */
    
        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是编辑窗口控件
            dw_detail = GetControl(L"dw_detail");
            dw_detail.openUrl(L"/sale/view/UserGroup/template/maint");
            dw_detail.SetSelectionBorder(0);
            dw_detail.SetColHeaderHeight(0);
            dw_detail.SetRowSelectorWidth(0);
            dw_detail.SetHScrollState(false);
            dw_detail.SetVScrollState(false);
            
            OnAttachEvent();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            
            return 1;
        }
        
        int onloaded()
        {
            SetAgent();
            return 1;
        }
    };
jrj/project/business/Public/UserGroupPersonSelect.cpp
@@ -1,90 +1,150 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) UserGroupPersonSelectWin : public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
        xstring    m_sTxt;
    public:
        UserGroupPersonSelectWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static UserGroupPersonSelectWin* CreateInstance(void* implPtr, void* hWnd)
        {
            UserGroupPersonSelectWin* pWin = new UserGroupPersonSelectWin(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
            //重置工具条
            return 1;
        }
                
        int OnOk()
        int  OnRetrieve()
        {
            if(GetParam())
            xcontrol xc = GetControl(L"QueryTxt");
            m_sTxt = xc.GetText() + L"";
            xml x;
            xaserverarg arg;
            arg.AddArg(L"sTxt", m_sTxt);
            if (xurl::post(L"OrganizationStruct/select.Person", arg.GetString(), x) != 1)
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                CloseWindow();
                trace(x.text());
                return -1;
            }
            else
            {
                dw_list.Retrieve(x);
                dw_list.Redraw();
                dw_list.SetReadOnly(true);
            }
            return 1;
        }
        int OnOK()
        {
            xaserverarg arg = GetArg();
            arg.AddArg(L"comdid", L"xmOk");
            int row = dw_list.GetNextSelectRow(1);
            if (row < 1)
            {
                alert(L"请选择人员!");
                return 1;
            }
            xstring str = L"<root>";
            while (row > 0 && row <= dw_list.GetRowCount())
            {
                KXMLDOMElement e = dw_list.GetRowElement(row);
                xstring PersonID = e.selectSingleNode(L"PersonID").text() + xstring(L"");
                xstring Name = e.selectSingleNode(L"Name").text() + xstring(L"");
                xstring No = e.selectSingleNode(L"EmployeeNo").text() + xstring(L"");
                str += L"<item PersonID='" + PersonID + L"' Name='" + Name + L"' No='" + No + L"'/>";
                row = dw_list.GetNextSelectRow(row + 1);
            }
            str += L"</root>";
            arg.AddArg(L"data", str);
            CloseWindow();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmOk")
                OnOK();
            else if (comdid == L"query")
            {
                CloseWindow();
                return 1;
                OnRetrieve();
            }
            else if(comdid=="xmOk") return OnOk();
            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)&UserGroupPersonSelectWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupPersonSelectWin::OnSetFocus);
        }
        int OnInitial()
        {
            //SetAgent();
            OnAttachEvent();
            return 1;
        }
    
        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是编辑窗口控件
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"组织架构.vface/template/HrEmployee/PersonSel");
            dw_list.SetSelectionMode(3);
            dw_list.SetReadOnly(true);
            
            OnAttachEvent();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            OnInitial();
            OnRetrieve();
            
            return 1;
        }
    };
jrj/project/business/Public/UserGroupPersonSelectEx.cpp
@@ -1,90 +1,150 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) UserGroupPersonSelectWinEx : public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
        xstring    m_sTxt;
    public:
        UserGroupPersonSelectWinEx(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static UserGroupPersonSelectWinEx* CreateInstance(void* implPtr, void* hWnd)
        {
            UserGroupPersonSelectWinEx* pWin = new UserGroupPersonSelectWinEx(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
            //重置工具条
            return 1;
        }
                
        int OnOk()
        int  OnRetrieve()
        {
            if(GetParam())
            xcontrol xc = GetControl(L"QueryTxt");
            m_sTxt = xc.GetText() + L"";
            xml x;
            xaserverarg arg;
            arg.AddArg(L"sTxt", m_sTxt);
            if (xurl::post(L"OrganizationStruct/select.PersonEx", arg.GetString(), x) != 1)
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                CloseWindow();
                trace(x.text());
                return -1;
            }
            else
            {
                dw_list.Retrieve(x);
                dw_list.Redraw();
                dw_list.SetReadOnly(true);
            }
            return 1;
        }
        int OnOK()
        {
            xaserverarg arg = GetArg();
            arg.AddArg(L"comdid", L"xmOk");
            int row = dw_list.GetNextSelectRow(1);
            if (row < 1)
            {
                alert(L"请选择人员!");
                return 1;
            }
            xstring str = L"<root>";
            while (row > 0 && row <= dw_list.GetRowCount())
            {
                KXMLDOMElement e = dw_list.GetRowElement(row);
                xstring PersonID = e.selectSingleNode(L"PersonID").text() + xstring(L"");
                xstring Name = e.selectSingleNode(L"Name").text() + xstring(L"");
                xstring No = e.selectSingleNode(L"EmployeeNo").text() + xstring(L"");
                str += L"<item PersonID='" + PersonID + L"' Name='" + Name + L"' No='" + No + L"'/>";
                row = dw_list.GetNextSelectRow(row + 1);
            }
            str += L"</root>";
            arg.AddArg(L"data", str);
            CloseWindow();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmOk")
                OnOK();
            else if (comdid == L"query")
            {
                CloseWindow();
                return 1;
                OnRetrieve();
            }
            else if(comdid=="xmOk") return OnOk();
            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)&UserGroupPersonSelectWinEx::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupPersonSelectWinEx::OnSetFocus);
        }
        int OnInitial()
        {
            //SetAgent();
            OnAttachEvent();
            return 1;
        }
    
        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是编辑窗口控件
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"组织架构.vface/template/HrEmployee/PersonSel");
            dw_list.SetSelectionMode(3);
            dw_list.SetReadOnly(true);
            
            OnAttachEvent();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            OnInitial();
            OnRetrieve();
            
            return 1;
        }
    };
jrj/project/business/Public/UserGroupSelect.cpp
@@ -1,90 +1,147 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) UserGroupSelectWin : public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
        xstring    m_sTxt;
    public:
        UserGroupSelectWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static UserGroupSelectWin* CreateInstance(void* implPtr, void* hWnd)
        {
            UserGroupSelectWin* pWin = new UserGroupSelectWin(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            SetAgent();
            //重置工具条
            //SetAgent();
            return 1;
        }
                
        int OnOk()
        int  OnRetrieve()
        {
            if(GetParam())
            xml x;
            xaserverarg arg;
            if (xurl::post(L"/sale/data/UserGroup/list", arg.GetString(), x) != 1)
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                CloseWindow();
                trace(x.text());
                return -1;
            }
            else
            {
                dw_list.Retrieve(x);
                dw_list.Redraw();
                dw_list.SetReadOnly(true);
            }
            return 1;
        }
        int OnOK()
        {
            xaserverarg arg = GetArg();
            arg.AddArg(L"comdid", L"xmOk");
            int row = dw_list.GetNextSelectRow(1);
            if (row < 1)
            {
                alert(L"请选择小组!");
                return 1;
            }
            xstring str = L"<root>";
            while (row > 0 && row <= dw_list.GetRowCount())
            {
                KXMLDOMElement e = dw_list.GetRowElement(row);
                xstring UserGroupID = e.selectSingleNode(L"@guid").text() + xstring(L"");
                xstring Name = e.selectSingleNode(L"Name").text() + xstring(L"");
                xstring No = e.selectSingleNode(L"NO").text() + xstring(L"");
                str += L"<item UserGroupID='" + UserGroupID + xstring(L"' Name='") + Name + L"' NO='" + No + L"'/>";
                row = dw_list.GetNextSelectRow(row + 1);
            }
            str += L"</root>";
            arg.AddArg(L"data", str);
            CloseWindow();
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmOk")
                OnOK();
            else if (comdid == L"query")
            {
                CloseWindow();
                return 1;
                OnRetrieve();
            }
            else if(comdid=="xmOk") return OnOk();
            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)&UserGroupSelectWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupSelectWin::OnSetFocus);
        }
        int OnInitial()
        {
            SetAgent();
            OnAttachEvent();
            return 1;
        }
    
        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是编辑窗口控件
            dw_list = GetControl(L"dw_list");
            dw_list.openUrl(L"/sale/view/UserGroup/template/list");
            dw_list.SetSelectionMode(3);
            dw_list.SetReadOnly(true);
            
            OnAttachEvent();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            OnInitial();
            OnRetrieve();
            
            return 1;
        }
    };
jrj/project/business/Public/UserGroupShare.cpp
@@ -1,88 +1,293 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#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
        xcontrol sle_1;
    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)
            {
                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 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);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupShareWin::OnSetFocus);
        }
        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();
            xitem.Release();
            /*alert(L"Category:"+Category +
                    "\r\nReciever:"+Reciever + L"\r\nNo:"+NO + L"\r\nEntityID:"+EntityID + L"Subject:"+Subject+
                    "\r\nContent:"+Content);
            */
            x = ViewObject::AddMessage(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);
                    }
                }
                xitem.Release();
                //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()
        {
            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是编辑窗口控件
            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();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            //SetAgent();
            if (GetWinParam())
                OnRetrieve();
            
            return 1;
        }
jrj/project/business/Public/UserGroupShareEx.cpp
@@ -1,88 +1,150 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) UserGroupShareExWin : public xframe
    {
    public:
        xdwgrid    dw_list;
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
    public:
        UserGroupShareExWin(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static UserGroupShareExWin* CreateInstance(void* implPtr, void* hWnd)
        {
            UserGroupShareExWin* pWin = new UserGroupShareExWin(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
            return 1;
        }
        int OnOK()
        {
            xaserverarg arg = GetArg();
            arg.AddArg(L"process", L"ok");
                
        int OnOk()
        {
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
            xml x = xml::Make();
            dw_list.DwUpdateAllToEx(x);
            arg.AddArg(L"result", x.xml());
            x.Free();
                CloseWindow();
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmCancel")
            {
                CloseWindow();
                return 1;
            }
            else if(comdid=="xmOk") return OnOk();
            if (comdid == L"xmOK") return OnOK();
            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"Name", ele.getAttribute(L"Name"));
                        if (comdid == L"xmMemberAdd")
                        {
                            dw_list.SetItemString(row, L"No", ele.getAttribute(L"No"));
                            dw_list.SetItemString(row, L"PersonID", ele.getAttribute(L"PersonID"));
                        }
                        else
                        {
                            xstring no = ele.getAttribute(L"NO");
                            dw_list.SetItemString(row, L"No", L"[" + no + L"]");
                            dw_list.SetItemString(row, L"UserGroupID", ele.getAttribute(L"UserGroupID"));
                        }
                    }
                    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)&UserGroupShareExWin::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&UserGroupShareExWin::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是编辑窗口控件
            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();
            if(GetParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
            }
            //SetAgent();
            
            return 1;
        }
jrj/project/business/Public/search.dialog.cpp
@@ -1,32 +1,48 @@
class SearchDlg :  public xframe
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
    class __declspec(dllexport) SearchDlg : public xframe
    {
    public:
        xnode    m_agentNode;    //Agent Condition
        xcontrol sle_1;
    public:
        SearchDlg(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {}
    public:
        static SearchDlg* CreateInstance(void* implPtr, void* hWnd)
        {
            SearchDlg* pWin = new SearchDlg(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 OnSetFocus(ref TEvent evt,int param)
        int OnSetFocus(TEvent* evt, LPARAM param)
        {
            //重置工具条
            //SetAgent();
@@ -35,53 +51,53 @@
                
        int OnOk()
        {
            if(GetParam())
            if (GetWinParam())
            {
                xaserverarg arg = GetParam();
                arg.AddArg("text",GetControl("sl_search").GetText());
                xaserverarg arg = GetArg();
                arg.AddArg(L"text", GetControl(L"sl_search").GetText());
                CloseWindow();
            }
            return 1;
        }
        //命令发布函数
        int OnCmdDispatch(string comdid)
        int OnCmdDispatch(xstring comdid)
        {
            if(comdid=="xmCancel")
            if (comdid == L"xmCancel")
            {
                CloseWindow();
                return 1;
            }
            else if(comdid=="xmOk") return OnOk();
            else if (comdid == L"xmOk") return OnOk();
            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)&SearchDlg::OnXCommand);
            //获取焦点事件,用于重置工具条
            AttachEvent("WM_SETFOCUS",OnSetFocus);
            AttachEvent(L"WM_SETFOCUS", (FEvent)&SearchDlg::OnSetFocus);
        }
    
        int onload()
        {
            sle_1 = GetControl("sl_search");
            int x = win32::GetWindowLong(sle_1.GetId(), -16); //GWL_STYLE
            sle_1 = GetControl(L"sl_search");
            int x = GetWindowLong(GetHWND(), -16); //GWL_STYLE
            x = x+ 0x0008;
            win32::SetWindowLong(sle_1.GetId(), -16,x);//sle_1是编辑窗口控件
            SetWindowLong(GetHWND(), -16, x);//sle_1是编辑窗口控件
            
            OnAttachEvent();
            if(GetParam())
            if (GetWinParam())
            {
                xaserverarg arg = GetParam();
                GetControl("sl_search").SetText(arg.GetArgString("text"));
                xaserverarg arg = GetArg();
                GetControl(L"sl_search").SetText(arg.GetArgString(L"text"));
            }
            
            return 1;