#pragma once
|
|
#include <wobject/xwin.hpp>
|
#include <wobject/xurl.hpp>
|
#include <xcontrol/xdwgrid.hpp>
|
#include <xcontrol/xdwpages.hpp>
|
#include <xcontrol/xcombobox.hpp>
|
#include <xcontrol/xtreeview.hpp>
|
#include "frame.vframe.vbusiness.hpp"
|
#include <wobject/xurl.hpp>
|
#include "../vutil/publiccode.vutil.vbusiness.hpp"
|
#include "listwin.vframe.vbusiness.hpp"
|
|
class listtree : public listwin
|
{
|
string m_sType; //type
|
string m_sTypeTxt; //Ñ¡ÖÐÊ÷µÄdata
|
xtreeview tv_1;
|
xcombobox ddlb_1;
|
int changeddlb;
|
|
int createSubTree(xtreeview* tv_folder, 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 = new KXMLDOMElement(nlist.item(i));
|
string name = e->selectSingleNode(L"Name").text();
|
HTREEITEM hw = tv_folder->InsertChildItem(h, name, (LPARAM)e, 15);
|
createSubTree(tv_folder, hw, e);
|
}
|
}
|
return 1;
|
}
|
|
int OnCreateTree(string sType)
|
{
|
while (tv_1.GetRootItem() > 0)
|
tv_1.DeleteItem(tv_1.GetRootItem());
|
KXMLDOMDocument x;
|
xaserverarg arg;
|
arg.AddArg(L"sType", sType);
|
|
xstring dataUrl = L"pref/listtree";
|
KXMLDOMElement xframeElement = GetElement();
|
KXMLDOMNode agent = xframeElement.selectSingleNode(L"//xtree[@name='tv_1']");
|
if (agent)
|
{
|
if (agent.selectSingleNode(L"@dataurl"))
|
dataUrl = agent.selectSingleNode(L"@dataurl").text();
|
}
|
|
if (xurl::get(GetServerUrl(),(xstring)GetEntityName(1) + L"/" + dataUrl, arg.GetString(), x) != 1)
|
{
|
//trace(x.GetXmlDoc().text);
|
return -1;
|
}
|
else
|
{
|
KXMLDOMNodeList nlist = x.selectNodes(L"root/item");
|
int len = nlist.length();
|
if (len > 0)
|
{
|
int i;
|
for (i = 0; i < len; i++)
|
{
|
KXMLDOMElement* e = new KXMLDOMElement(nlist.item(i));
|
string name = e->selectSingleNode(L"Name").text();
|
HTREEITEM h = tv_1.InsertChildItem(0, name, (LPARAM)e, 17);
|
createSubTree(&tv_1, h, e);
|
if (len == 1) tv_1.ExpandItem(h);
|
}
|
tv_1.ExpandItem(0);
|
}
|
}
|
return 1;
|
}
|
|
//Ê÷Ñ¡Ôñ
|
int OnTreeSelChanged(TEvent* evt, LPARAM p)
|
{
|
if (changeddlb == 0)
|
{
|
HTREEITEM h = tv_1.GetSelectedItem();
|
KXMLDOMElement* e = (KXMLDOMElement * )tv_1.GetItemData(h);
|
|
HTREEITEM root =tv_1.GetRootItem();
|
if (h == root)
|
{
|
m_sType = L"";
|
m_sTypeTxt = L"";
|
}
|
else
|
{
|
string t = e->selectSingleNode(L"Type").text();
|
m_sType = t ;
|
string txt = e->selectSingleNode(L"Code").text();
|
if (txt == L"")
|
txt = e->selectSingleNode(L"Name").text();
|
m_sTypeTxt = txt;
|
}
|
m_pageIndex = 1;
|
OnRetrieve();
|
//trace(m_sTypeTxt);
|
}
|
return 1;
|
}
|
|
//xcomboboxÏÂÀ
|
int OnSelectDdlb(TEvent* evt, LPARAM p)
|
{
|
changeddlb = 1;
|
HWND wid = ddlb_1.GetHWND();
|
int CB_GETCURSEL = 0x0147;
|
int nIndex = SendMessageW(wid, CB_GETCURSEL, 0, 0);
|
KXMLDOMElement e = ddlb_1.GetElement();//GetitemData(wid,nIndex);//ddlb_1.GetElement();
|
KXMLDOMElement e2 = e.selectSingleNode(L"item[" + xstring(nIndex + 1) + L"]");
|
string text = e2.selectSingleNode(L"@element").text();
|
OnCreateTree(text);
|
changeddlb = 0;
|
return 1;
|
}
|
|
int onloadtree()
|
{
|
tv_1 = GetControl(L"tv_1");
|
ddlb_1 = GetControl(L"cbx_1");
|
//dw_detail = this.GetControl("dw_detail");
|
|
AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&listtree::OnTreeSelChanged);
|
AttachEvent(L"cbx_1", L"CBN_SELCHANGE", (FEvent)&listtree::OnSelectDdlb);
|
|
m_sType = L""; //type
|
m_sTypeTxt = L""; //Ñ¡ÖÐÊ÷µÄdata
|
changeddlb = 0;
|
|
KXMLDOMElement xframeElement = GetElement();
|
KXMLDOMNode agent = xframeElement.selectSingleNode(L"//xcombobox[@name='cbx_1' and @visible ='layer']");
|
if (agent)
|
{
|
string s = agent.xml();
|
string sType = agent.selectSingleNode(L"@element").text();
|
OnCreateTree(sType);
|
}
|
else
|
OnCreateTree(L"");
|
return 1;
|
}
|
|
|
int onload()
|
{
|
listwin::onload();
|
onloadtree();
|
return 1;
|
}
|
};
|