#include <wobject/xstring.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <xcontrol/xcell.hpp>
|
|
|
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
|
#include "viewobject/view.base.hpp"
|
|
using xml = KXMLDOMDocument;
|
class __declspec(dllexport) GroupManagerList : public xframe
|
{
|
public:
|
xdwgrid dw_list;
|
xnode m_agentNode; //Agent Condition
|
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()
|
{
|
xstring xfNodeAgentArea = L"agentarea";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
if (m_agentNode)
|
{
|
SetAgentNode(anode, m_agentNode);
|
}
|
else
|
{
|
KXMLDOMElement xframeElement = GetElement();
|
KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[1]/*");
|
if (agent)
|
{
|
xstring s = agent.xml();
|
m_agentNode = SetAgentNode(anode, s);
|
}
|
}
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(TEvent* evt, LPARAM param)
|
{
|
//ÖØÖù¤¾ßÌõ
|
SetAgent();
|
return 1;
|
}
|
|
int createSubTree(int wid, HTREEITEM h, KXMLDOMElement ele)
|
{
|
|
KXMLDOMNodeList nlist = ele.selectNodes(L"item");
|
int i;
|
int s = nlist.length();
|
if (s > 0)
|
for (i = 0; i < s; i++)
|
{
|
|
KXMLDOMElement e = nlist.item(i);
|
xstring name = e.selectSingleNode(L"@name").text();
|
HTREEITEM hw = tv_folder.InsertChildItem(h, name,e , 15);
|
createSubTree(wid, hw, e);
|
}
|
return 1;
|
}
|
|
int OnCreateTree()
|
{
|
//int wid = tv_folder.GetId();
|
while (!tv_folder.GetRootItem())
|
tv_folder.DeleteItem(tv_folder.GetRootItem());
|
|
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();
|
HTREEITEM h = tv_folder.InsertChildItem(0, name, e, 15);
|
createSubTree(0,h, e);
|
tv_folder.ExpandItem(h);
|
}
|
tv_folder.ExpandItem( 0);
|
}
|
|
return 1;
|
}
|
|
//Ê÷Ñ¡Ôñ
|
int OnTreeSelChanged(TEvent* evt, LPARAM p)
|
{
|
|
NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
|
HTREEITEM hItem = nmtv.itemNew.hItem;
|
|
KXMLDOMElement e = tv_folder.GetItemData(hItem);
|
xstring UserGroupID = e.selectSingleNode(L"@guid").text();
|
OnRetrieve(UserGroupID);
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(xstring comdid)
|
{
|
if (comdid == L"xmAdd")
|
{
|
OpenWindow(L"dev:xpage[UserGroupMaint.vx]", 0);
|
return 1;
|
}
|
if (comdid == L"xmSave")
|
{
|
return OnSave();
|
}
|
if (comdid == L"xmMemberAdd")
|
{
|
HTREEITEM hItem = tv_folder.GetSelectedItem();
|
if (!hItem) 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 OnSave()
|
{
|
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(L"WM_XCOMMAND", (FEvent)&GroupManagerList::OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent(L"WM_SETFOCUS", (FEvent)&GroupManagerList::OnSetFocus);
|
AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&GroupManagerList::OnTreeSelChanged); //Ê÷Ñ¡Ôñ
|
return 1;
|
}
|
|
|
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()
|
{
|
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();
|
|
return 1;
|
}
|
|
int onloaded()
|
{
|
SetAgent();
|
|
return 1;
|
}
|
};
|