#include <wobject/xstring.hpp> 
 | 
#include <wobject/xstring.hpp> 
 | 
#include <xcontrol/xtreeview.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
#include <wobject/xdouble.hpp> 
 | 
#include <xcontrol/xlayersheet.hpp> 
 | 
  
 | 
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" 
 | 
#include "viewobject/view.base.hpp" 
 | 
  
 | 
using xml = KXMLDOMDocument; 
 | 
class __declspec(dllexport) DataConfig : public xframe 
 | 
{ 
 | 
  
 | 
public: 
 | 
    xtreeview    dw_tree; 
 | 
    xdwgrid dw_list; 
 | 
    xdwgrid dw_role; 
 | 
    combobox dw_ddlb; 
 | 
    xlayersheet m_sheet; 
 | 
public: 
 | 
    DataConfig(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} 
 | 
public: 
 | 
    static DataConfig* CreateInstance(void* implPtr, void* hWnd) 
 | 
    { 
 | 
        DataConfig* pWin = new DataConfig(implPtr, (HWND)hWnd); 
 | 
        return pWin; 
 | 
    } 
 | 
    int alert(xstring str) 
 | 
    { 
 | 
        TApp::alert(this, str, 3); 
 | 
        return 0; 
 | 
    } 
 | 
    int createTree(KXMLDOMElement e, HTREEITEM parentItem) 
 | 
    { 
 | 
        if (dw_tree.GetChildItem(parentItem) > 0) return 0; 
 | 
  
 | 
        var list = e.selectNodes(L"item"); 
 | 
        int i = 0, s = list.length; 
 | 
        KXMLDOMElement xitem; 
 | 
        for (i = 0; i < s; i++) 
 | 
        { 
 | 
            xitem = list.item(s - i - 1); 
 | 
            xstring Name = xitem.selectSingleNode(L"name").text(); 
 | 
            xstring image = xitem.selectSingleNode(L"image").text(); 
 | 
            HTREEITEM curItem = dw_tree.InsertItem(parentItem, 0, Name, xitem, image.toInt()); 
 | 
            xstring child = xitem.selectSingleNode(L"child").text(); 
 | 
            if (child != L"0") 
 | 
                dw_tree.SetItemChild1(curItem, 1); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnTreeExpanding(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; 
 | 
  
 | 
        HTREEITEM sitem = nmtv.itemNew.hItem; 
 | 
  
 | 
        int i = dw_ddlb.GetCurSel(); 
 | 
        KXMLDOMElement e = dw_tree.GetItemData(sitem); 
 | 
        xstring id = e.selectSingleNode(L"id").text(); 
 | 
        xstring xid = e.selectSingleNode(L"tree").text(); 
 | 
        HCURSOR hCursor = xutil::SetCursorWait(); 
 | 
        xml x; 
 | 
  
 | 
        xaserverarg arg; 
 | 
         
 | 
        arg.AddArg(L"pid", id); 
 | 
        arg.AddArg(L"tree", xid); 
 | 
        //if(xaserver::ExecXQuery(GetServerUrl(),L"[selectRoleInt.xq]",arg.GetString(),x)!=1) 
 | 
        if (xurl::get(L"/sale/data/Role.config/pref/user/select", arg.GetString(), x) != 1) 
 | 
        { 
 | 
            trace(L"´íÎó·µ»Ø=L" + (xstring)x.xml()); 
 | 
            return -1; 
 | 
        } 
 | 
  
 | 
        KXMLDOMElement ele = x.documentElement(); 
 | 
        createTree(ele, sitem); 
 | 
        xutil::RestoreCursor(hCursor); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnRetrieve(xstring id) 
 | 
    { 
 | 
        HCURSOR hIcon = xutil::SetCursorWait(); 
 | 
        xml x; 
 | 
  
 | 
        xaserverarg arg; 
 | 
         
 | 
        arg.AddArg(L"id", id); 
 | 
        trace(id); 
 | 
        arg.AddArg(L"flag", L"-1"); 
 | 
        //if(xaserver::ExecXQuery(GetServerUrl(),L"[selectRoleInt.xq]",arg.GetString(),x)!=1) 
 | 
        if (xurl::get(L"/sale/data/Role.config/pref/maint/data", arg.GetString(), x) != 1) 
 | 
        { 
 | 
            trace(L"´íÎó·µ»Ø1=L" + (xstring)x.xml()); 
 | 
            return -1; 
 | 
        } 
 | 
  
 | 
        if ((xstring)x.xml() == L"") 
 | 
            x.loadXML(L"<root><items/><roles/></root>"); 
 | 
  
 | 
        xml x1; 
 | 
  
 | 
        if (x.selectSingleNode(L"root/items")) 
 | 
        { 
 | 
            dw_list.Retrieve(x.selectSingleNode(L"root/items")); 
 | 
            dw_list.SetReadOnly(true); 
 | 
            dw_list.Redraw(); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            x1.loadXML(L"<items/>"); 
 | 
            dw_list.Retrieve(x1); 
 | 
            dw_list.SetReadOnly(true); 
 | 
            dw_list.Redraw(); 
 | 
        } 
 | 
        if (x.selectSingleNode(L"root/roles")) 
 | 
        { 
 | 
            dw_role.Retrieve(x.selectSingleNode(L"root/roles")); 
 | 
            dw_role.SetReadOnly(true); 
 | 
            dw_role.Redraw(); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            x1.loadXML(L"<roles/>"); 
 | 
            dw_role.Retrieve(x1); 
 | 
            dw_role.SetReadOnly(true); 
 | 
            dw_role.Redraw(); 
 | 
        } 
 | 
        xutil::RestoreCursor(hIcon); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnTreeSelecded(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; 
 | 
  
 | 
        HTREEITEM hItem = nmtv.itemNew.hItem; 
 | 
        //int wid = dw_tree.GetId();                 
 | 
        KXMLDOMElement ele = dw_tree.GetItemData(hItem); 
 | 
  
 | 
        xstring id = ele.selectSingleNode(L"id").text(); 
 | 
        OnRetrieve(id); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnSelect() 
 | 
    { 
 | 
        int nIndex = dw_ddlb.GetCurSel(); 
 | 
  
 | 
        combobox dw_ddlbdata = new combobox; 
 | 
        dw_ddlbdata.setNativePointer(GetControl(L"dw_ddlbdata")); 
 | 
        int h = combobox::FindString(dw_ddlbdata.GetId(), xstring(nIndex)); 
 | 
        param p; 
 | 
        xnode bnode; 
 | 
        xnode anode = new xnode; 
 | 
        anode.setNativePointer(GetAgentNode(L"tree")); 
 | 
        if (h < 0) 
 | 
        { 
 | 
            xstring str = L"<vbox><xtree name='dw_tree" + xstring(nIndex) + L"' imagelist='0'/></vbox>"; 
 | 
            bnode = new xnode; 
 | 
            bnode.setNativePointer(SetAgentNode(anode, str)); 
 | 
  
 | 
            p = combobox::GetItemData(dw_ddlb.GetId(), nIndex); 
 | 
            KXMLDOMElement ele = p; 
 | 
  
 | 
            dw_tree = new treeview; 
 | 
            dw_tree.setNativePointer(GetControl(L"dw_tree" + xstring(nIndex))); 
 | 
  
 | 
            createTree(ele, 0); 
 | 
            AttachEvent(L"dw_tree" + xstring(nIndex), L"TVN_ITEMEXPANDING", (FEvent)&DataConfig::OnTreeExpanding); 
 | 
            AttachEvent(L"dw_tree" + xstring(nIndex), L"TVN_SELCHANGED", (FEvent)&DataConfig::OnTreeSelecded); 
 | 
  
 | 
            int sk = combobox::AddItem(dw_ddlbdata.GetId(), xstring(nIndex)); 
 | 
            p = bnode; 
 | 
            combobox::SetItemData(dw_ddlbdata.GetId(), sk, p); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            p = combobox::GetItemData(dw_ddlbdata.GetId(), h); 
 | 
            bnode = p; 
 | 
            SetAgentNode(anode, bnode); 
 | 
  
 | 
            dw_tree = new treeview; 
 | 
            dw_tree.setNativePointer(GetControl(L"dw_tree" + xstring(nIndex))); 
 | 
        } 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnSave() 
 | 
    { 
 | 
        HTREEITEM m = dw_tree.GetSelectedItem(); 
 | 
        if (m == 0) return 0; 
 | 
  
 | 
        //int wid = dw_tree.GetId(); 
 | 
        HTREEITEM hItem = dw_tree.GetSelectedItem(); 
 | 
        KXMLDOMElement ele = dw_tree.GetItemData(hItem); 
 | 
        xstring id = ele.selectSingleNode(L"id").text(); 
 | 
        xstring tpy = ele.selectSingleNode(L"type").text(); 
 | 
  
 | 
        xml x; 
 | 
  
 | 
        dw_list.DwUpdateAllToEx(x); 
 | 
        KXMLDOMElement e = x.documentElement(); 
 | 
        e.setAttribute(L"id", id); 
 | 
        e.setAttribute(L"type", tpy); 
 | 
  
 | 
        xml x1; 
 | 
  
 | 
        dw_role.DwUpdateAllToEx(x1); 
 | 
        KXMLDOMElement e1 = x1.documentElement(); 
 | 
        e.appendChild(e1); 
 | 
  
 | 
        xaserverarg arg; 
 | 
  
 | 
        arg.AddArg(L"content", e.xml()); 
 | 
        arg.AddArg(L"dbmap", L"Data.config.dbmap"); 
 | 
        //if(xaserver::ExecXAction(GetServerUrl(),L"[onSave.xa]",arg.GetString(),x)!=1) 
 | 
        if (xurl::get(L"/sale/data/Role.config/pref/save", arg.GetString(), x) != 1) 
 | 
            //if(xurl::get(L"/workflow/action/datarole.resource/bill.update",arg.GetString(),x)!=1) 
 | 
        { 
 | 
            trace(L"error:" + (xstring)x.xml()); 
 | 
            alert(L"±£´æ³ö´í!"); 
 | 
            return 0; 
 | 
        } 
 | 
        if (x.selectSingleNode(L"error")) 
 | 
        { 
 | 
            alert(L"±£´æ³ö´í2!"); 
 | 
            return 0; 
 | 
        } 
 | 
        dw_list.ResetUpdateStatus(); 
 | 
        dw_role.ResetUpdateStatus(); 
 | 
        alert(L"±£´æ³É¹¦!"); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnSelectDdlb(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        xml x; 
 | 
  
 | 
        dw_list.DwUpdateAllToEx(x); 
 | 
        KXMLDOMElement e = x.documentElement(); 
 | 
        if (e) 
 | 
        { 
 | 
            var list = e.selectNodes(L"//*[@update.new='1' or @update.modify='1' or @update.delete='1']"); 
 | 
            int s = list.length; 
 | 
            if (s > 0) 
 | 
            { 
 | 
                int ret = MessageBox(GetHWND(), L"µ±Ç°Ð޸ļÇ¼δ±£´æ£¬ÊÇ·ñ±£´æ£¿", L"Ìáʾ", 4); 
 | 
                if (ret == 6) 
 | 
                    OnSave(); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        OnSelect(); 
 | 
  
 | 
        HTREEITEM m = dw_tree.GetSelectedItem(); 
 | 
        xstring id; 
 | 
        if (m == 0) 
 | 
        { 
 | 
            id = L""; 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            KXMLDOMElement ele = dw_tree.GetItemData(m); 
 | 
            id = ele.selectSingleNode(L"id").text(); 
 | 
        } 
 | 
        OnRetrieve(id); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int createTreeRoot() 
 | 
    { 
 | 
        xml x; 
 | 
  
 | 
        xaserverarg arg; 
 | 
  
 | 
        arg.AddArg(L"pid", L""); 
 | 
        arg.AddArg(L"tree", L"0"); 
 | 
        //if(xaserver::ExecXQuery(GetServerUrl(),L"[selectRoleInt.xq]",arg.GetString(),x)!=1) 
 | 
        if (xurl::get(L"/sale/data/Role.config/pref/user/select", arg.GetString(), x) != 1) 
 | 
        { 
 | 
            trace(L"´íÎó·µ»Ø=L" + (xstring)x.xml()); 
 | 
            return -1; 
 | 
        } 
 | 
        KXMLDOMElement e = x.documentElement(); 
 | 
        var list = e.selectNodes(L"*"); 
 | 
        int i; 
 | 
        int len = list.length; 
 | 
        KXMLDOMElement ele; 
 | 
        for (i = 0; i < len; i++) 
 | 
        { 
 | 
            ele = list.item(i); 
 | 
            xstring name = ele.selectSingleNode(L"@tree").text(); 
 | 
            int sk = combobox::AddItem(dw_ddlb.GetId(), name); 
 | 
            param p = ele; 
 | 
            combobox::SetItemData(dw_ddlb.GetId(), sk, p); 
 | 
        } 
 | 
        if (len > 0) 
 | 
        { 
 | 
            combobox::SetCurSel(dw_ddlb.GetId(), 0); 
 | 
            OnSelect(); 
 | 
        } 
 | 
        OnRetrieve(L""); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnSetFocus(TEvent* evt, LPARAM p) 
 | 
    { 
 | 
        SetAgent(L"data"); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    xstring GetPath() 
 | 
    { 
 | 
        HTREEITEM h = dw_tree.GetSelectedItem(); 
 | 
        if (h == 0) return 0; 
 | 
  
 | 
        //int tv = dw_tree.GetId(); 
 | 
        xstring str = dw_tree.GetItemLabel(h); 
 | 
        HTREEITEM k = dw_tree.GetParentItem(h); 
 | 
        while (k > 0) 
 | 
        { 
 | 
            xstring tmp = dw_tree.GetItemLabel(k); 
 | 
            str = tmp + L"\\" + str; 
 | 
            k = dw_tree.GetParentItem(k); 
 | 
        } 
 | 
        return str; 
 | 
    } 
 | 
  
 | 
    int OnAddRole() 
 | 
    { 
 | 
        HTREEITEM m = dw_tree.GetSelectedItem(); 
 | 
        if (m == 0) return -1; 
 | 
        KXMLDOMElement ele = dw_tree.GetItemData(m); 
 | 
        xstring tpy = L"" + (xstring)ele.selectSingleNode(L"type").text(); 
 | 
        xaserverarg arg; 
 | 
        arg.setNativePointer(arg.CreateInstance()); 
 | 
        arg.AddArg(L"dataUrl", L"/sale/data/Role.config/pref/model/select"); 
 | 
        openUrl(L"/sale/view/Role.config/xpage/role/select/user", arg); 
 | 
        xstring str = arg.GetArgString(L"item"); 
 | 
        if (str == L"") return -1; 
 | 
        xml x; 
 | 
  
 | 
        x.loadXML(str); 
 | 
        var list = x.selectNodes(L"items/item"); 
 | 
        int i = 0, s = list.length; 
 | 
        KXMLDOMElement xitem; 
 | 
        int row = dw_role.GetRowCount() + 1; 
 | 
        xstring treepath = GetPath(); 
 | 
        for (i = 0; i < s; i++) 
 | 
        { 
 | 
            xitem = list.item(i); 
 | 
            xstring id = L"" + (xstring)xitem.selectSingleNode(L"@id").text(); 
 | 
            xstring name = L"" + (xstring)xitem.selectSingleNode(L"@name").text(); 
 | 
            //xstring tpy=L""+xitem.selectSingleNode(L"@type").text(); 
 | 
            dw_role.InsertRow(0); 
 | 
            dw_role.SetItemString(row + i, L"id", id); 
 | 
            dw_role.SetItemString(row + i, L"name", L"" + treepath); 
 | 
            dw_role.SetItemDisplayString(row + i, L"name", name); 
 | 
            dw_role.SetItemString(row + i, L"type", tpy); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnAddRow() 
 | 
    { 
 | 
        HTREEITEM m = dw_tree.GetSelectedItem(); 
 | 
        if (m == 0) return 0; 
 | 
  
 | 
        int k = m_sheet.GetSheetIndex(); 
 | 
        if (k == 0) 
 | 
            //openUrl(L"/sale/view/role.config/xpage/data/select/resource", dw_list); 
 | 
            OpenWindow(L"dev:xpage[Resource.select.data.config.vx]", dw_list); 
 | 
        else 
 | 
            OnAddRole(); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnDelRow() 
 | 
    { 
 | 
        int k = m_sheet.GetSheetIndex(); 
 | 
        int row; 
 | 
        xstring hr_type; 
 | 
        KXMLDOMElement e; 
 | 
        if (k == 0) 
 | 
        { 
 | 
            row = dw_list.GetRow(); 
 | 
            if (row<1 || row > dw_list.GetRowCount()) return -1; 
 | 
            e = dw_list.GetRowElement(row); 
 | 
            if (e.selectSingleNode(L"fromparent")) 
 | 
            { 
 | 
                hr_type = e.selectSingleNode(L"fromparent").text(); 
 | 
                if (hr_type != L"") 
 | 
                { 
 | 
                    alert(L"¼Ì³ÐµÄȨÏÞÎÞȨɾ³ý£¡"); 
 | 
                    return 0; 
 | 
                } 
 | 
            } 
 | 
            dw_list.DeleteRow(row); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            row = dw_role.GetRow(); 
 | 
            if (row<1 || row > dw_role.GetRowCount()) return -1; 
 | 
            e = dw_role.GetRowElement(row); 
 | 
            if (e.selectSingleNode(L"fromparent")) 
 | 
            { 
 | 
                hr_type = e.selectSingleNode(L"fromparent").text(); 
 | 
                if (hr_type != L"") 
 | 
                { 
 | 
                    alert(L"¼Ì³ÐµÄȨÏÞÎÞȨɾ³ý£¡"); 
 | 
                    return 0; 
 | 
                } 
 | 
            } 
 | 
            dw_role.DeleteRow(row); 
 | 
        } 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnSetCopy(xdwgrid dw, KXMLDOMElement e, xstring name) 
 | 
    { 
 | 
        xml x; 
 | 
  
 | 
        KXMLDOMElement ele; 
 | 
        bool f = false; 
 | 
  
 | 
        int count = dw.GetRowCount(); 
 | 
        if (count == 0) 
 | 
        { 
 | 
            x.loadXML(L"<" + name + L"s/>"); 
 | 
            ele = x.documentElement(); 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            KXMLDOMElement e1 = dw.GetRowElement(1); 
 | 
            ele = e1.parentNode; 
 | 
        } 
 | 
        var li = e.selectNodes(name); 
 | 
        int i; 
 | 
        int len = li.length; 
 | 
        xstring treepath = GetPath(); 
 | 
        for (i = 0; i < len; i++) 
 | 
        { 
 | 
            KXMLDOMElement ele1 = li.item(i); 
 | 
            if (ele1.selectSingleNode(L"fromparent")) 
 | 
            { 
 | 
                xstring str = ele1.selectSingleNode(L"fromparent").text(); 
 | 
                if (str != L"") continue; 
 | 
            } 
 | 
            xml x1; 
 | 
  
 | 
            x1.loadXML(ele1.xml()); 
 | 
            KXMLDOMElement ele2 = x1.documentElement(); 
 | 
            ele2.setAttribute(L"update.new", L"1"); 
 | 
            ele2.setAttribute(L"update.modify", L"1"); 
 | 
            ele2.setAttribute(L"guid", publiccode::GetGuid()); 
 | 
            if (ele2.selectSingleNode(L"name")) 
 | 
                ele2.selectSingleNode(L"name").text() = treepath; 
 | 
            //ele1.selectSingleNode(L"@guid").text() = publiccode::GetGuid(); 
 | 
            //ele1.selectSingleNode(L"@update.new").text() = L"1"; 
 | 
            //ele1.selectSingleNode(L"@update.modify").text() = L"1"; 
 | 
            ele.appendChild(ele2); 
 | 
        } 
 | 
        dw.Retrieve(ele); 
 | 
        dw.SetReadOnly(true); 
 | 
        dw.Redraw(); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnCopy() 
 | 
    { 
 | 
        xaserverarg arg; 
 | 
  
 | 
        OpenWindow(L"dev:xpage[Data.config.copy.vx]", arg); 
 | 
        xstring id = arg.GetArgString(L"id"); 
 | 
        xstring f = arg.GetArgString(L"flag"); 
 | 
        if (id == L"") return 1; 
 | 
  
 | 
        xml x; 
 | 
  
 | 
        if (xurl::get(L"/sale/data/Role.config/pref/maint/data", arg.GetString(), x) != 1) 
 | 
        { 
 | 
            trace(L"´íÎó·µ»Ø=L" + (xstring)x.xml()); 
 | 
            return -1; 
 | 
        } 
 | 
  
 | 
        if ((xstring)x.xml() == L"") 
 | 
            x.loadXML(L"<root><items/><roles/></root>"); 
 | 
  
 | 
        KXMLDOMElement e = x.documentElement(); 
 | 
  
 | 
        if (f == L"0" || f == L"1") 
 | 
        { 
 | 
            KXMLDOMElement ele1 = e.selectSingleNode(L"items"); 
 | 
            OnSetCopy(dw_list, ele1, L"item"); 
 | 
        } 
 | 
  
 | 
        if (f == L"0" || f == L"2") 
 | 
        { 
 | 
            KXMLDOMElement ele2 = e.selectSingleNode(L"roles"); 
 | 
            OnSetCopy(dw_role, ele2, L"role"); 
 | 
        } 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnCmdDispatch(xstring comdid) 
 | 
    { 
 | 
        if (comdid == L"Config") 
 | 
            openUrl(L"/sale/view/role.config/xpage/data/resource/config"); 
 | 
        if (comdid == L"RightQuery") 
 | 
            openUrl(L"/sale/view/role.config/xpage/data/modulerightquery"); 
 | 
        else if (comdid == L"New") 
 | 
            OnAddRow(); 
 | 
        else if (comdid == L"Del") 
 | 
            OnDelRow(); 
 | 
        else if (comdid == L"Save") 
 | 
            OnSave(); 
 | 
        else if (comdid == L"Copy") 
 | 
            OnCopy(); 
 | 
        else if (comdid == L"xmProdDivi") 
 | 
            openUrl(L"/sale/view/RoleAccount3/xpage/data/proddivi"); 
 | 
        return 0; 
 | 
    } 
 | 
  
 | 
    int OnXCommand(TEvent* evt, LPARAM param) 
 | 
    { 
 | 
        return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
    } 
 | 
  
 | 
    int onload() 
 | 
    { 
 | 
        SetAgent(L"data"); 
 | 
  
 | 
        dw_list = new xdwgrid; 
 | 
        dw_list.setNativePointer(GetControl(L"dw_list")); 
 | 
        dw_list.openUrl(L"/sale/view/Role.config/template/data/config/resourceOrg"); 
 | 
        dw_list.SetReadOnly(false); 
 | 
  
 | 
        dw_role = new xdwgrid; 
 | 
        dw_role.setNativePointer(GetControl(L"dw_role")); 
 | 
        //dw_role.SetDataObject(GetServerUrl(), L"dev:sheet[leftFrame.tpl/role]"); 
 | 
        //dw_role.openUrl(m_vface+L"/template/role/config/role"); 
 | 
        dw_role.openUrl(L"/sale/view/Role.config/template/role/config/role"); 
 | 
        dw_role.SetReadOnly(false); 
 | 
  
 | 
        dw_ddlb = new combobox; 
 | 
        dw_ddlb.setNativePointer(GetControl(L"dw_ddlb")); 
 | 
  
 | 
        m_sheet = new xlayersheet; 
 | 
        m_sheet.setNativePointer(GetControl(L"m_sheet")); 
 | 
  
 | 
        AttachEvent(L"WM_XCOMMAND", (FEvent)&DataConfig::OnXCommand); 
 | 
        AttachEvent(L"WM_SETFOCUS", (FEvent)&DataConfig::OnSetFocus); 
 | 
        AttachEvent(L"dw_ddlb", L"CBN_SELCHANGE", (FEvent)&DataConfig::OnSelectDdlb); 
 | 
  
 | 
        createTreeRoot(); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
}; 
 |