#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 = nlist.item(i); 
 | 
                string name = e.selectSingleNode(L"Name").text(); 
 | 
                HTREEITEM hw = tv_folder->InsertChildItem(h, name, 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 = nlist.item(i); 
 | 
                    string name = e.selectSingleNode(L"Name").text(); 
 | 
                    HTREEITEM h = tv_1.InsertChildItem(0, name, 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 = 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; 
 | 
    } 
 | 
}; 
 |