#include <wobject/xstring.hpp> 
 | 
#include <xcontrol/xtreeview.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
#include <wobject/xdouble.hpp> 
 | 
#include <xcontrol/xlayersheet.hpp> 
 | 
#include <xcontrol/xdatetimepick.hpp> 
 | 
  
 | 
  
 | 
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" 
 | 
#include "viewobject/view.base.hpp" 
 | 
  
 | 
using xml = KXMLDOMDocument; 
 | 
class __declspec(dllexport) ColorCardNew : public listwin 
 | 
{ 
 | 
public: 
 | 
    xdwgrid    dw_list; 
 | 
    xdwgrid    dw_detail; 
 | 
    bool     ismodify; 
 | 
    xnode    m_agentNode; 
 | 
    xstring    m_agentCond; 
 | 
public: 
 | 
    ColorCardNew(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {} 
 | 
public: 
 | 
    static ColorCardNew* CreateInstance(void* implPtr, void* hWnd) 
 | 
    { 
 | 
        ColorCardNew* pWin = new ColorCardNew(implPtr, (HWND)hWnd); 
 | 
        return pWin; 
 | 
    } 
 | 
    int SetAgent() 
 | 
    { 
 | 
        xstring xfNodeAgentArea  = L"agentarea"; 
 | 
        xnode anode = GetAgentNode(xfNodeAgentArea); 
 | 
        KXMLDOMElement xframeElement =  GetElement(); 
 | 
        KXMLDOMNode agent = xframeElement.selectSingleNode(L"agent/"+xfNodeAgentArea+L"[1]/*"); 
 | 
        if(agent) 
 | 
            SetAgentNode(anode, agent.xml()); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    //½¹µã¼¤»î´¦Àíº¯Êý 
 | 
    int OnSetFocus(TEvent* evt, LPARAM param) 
 | 
    { 
 | 
        SetAgent(); 
 | 
  
 | 
        //ÖØÖù¤¾ßÌõ 
 | 
        return 1; 
 | 
    } 
 | 
    int ProcessFlowAction(xstring guid,xstring comdid) 
 | 
    { 
 | 
        //int pr = pr1; 
 | 
        //xstring action = comdid;//.mid(comdid.find(L"action:",0)+7,9999); 
 | 
        /*if(action == L"bill.delete" || action == L"bill.deleteEx") 
 | 
        { 
 | 
            if (MessageBox(GetHWND(),L"ÊÇ·ñÈ·¶¨É¾³ý¼Ç¼!",L"Ìáʾ1",1) == 2)   
 | 
                return 1; 
 | 
        }*/ 
 | 
         
 | 
        xaserverarg arg0 ; 
 | 
         
 | 
        //arg0.AddArg(L"Action", action,L"xs:xstring"); 
 | 
        arg0.AddArg(L"EntityName", L"ColorCard",L"xs:xstring"); 
 | 
        arg0.AddArg(L"EntityIDName", L"ColorCardID",L"xs:xstring"); 
 | 
        arg0.AddArg(L"EntityID", guid,L"xs:xstring"); 
 | 
        arg0.AddArg(L"FunctionCode", comdid,L"xs:xstring"); 
 | 
        xml x ; 
 | 
         
 | 
  
 | 
        if(xurl::get(L"/sale/data/Role.config/sys/sql/action", arg0.GetString(), x) != 1) 
 | 
        {     
 | 
            //ismodify=false; 
 | 
            //dw_list.SetReadOnly(ismodify);             
 | 
            return -1; 
 | 
        } 
 | 
        xstring kk=x.xml(); 
 | 
        if(kk.find(L"<root/>",0)>=0)  
 | 
        { 
 | 
            //ismodify=true; 
 | 
            //dw_list.SetReadOnly(ismodify);     
 | 
            return 1; 
 | 
        } 
 | 
        return -1; 
 | 
    }     
 | 
         
 | 
    int ModifyProcessAction(xstring guid,xstring comdid) 
 | 
    { 
 | 
        if(ProcessFlowAction(guid,comdid)>0) 
 | 
        { 
 | 
            ismodify=true; 
 | 
            dw_list.SetReadOnly(ismodify);     
 | 
            return -1; 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            ismodify=false; 
 | 
            dw_list.SetReadOnly(ismodify);             
 | 
            return -1; 
 | 
        } 
 | 
    } 
 | 
    int DeleteProcessAction(xstring guid,xstring comdid) 
 | 
    { 
 | 
        if(ProcessFlowAction(guid,comdid)>0) 
 | 
        {             
 | 
            return -1; //ûÓÐȨÏÞ 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            return 1; //ÓÐȨÏÞ 
 | 
        } 
 | 
    } 
 | 
     
 | 
    //¸ù¾ÝColorCardID¼ÓÔØDetailÊý¾Ý 
 | 
    int  OnRetrieveDetail(xstring ColorCardID) 
 | 
    { 
 | 
        xml x; 
 | 
         
 | 
        xaserverarg arg; 
 | 
         
 | 
  
 | 
        arg.AddArg(L"ColorCardID",ColorCardID); 
 | 
        if (xurl::get(L"ColorCard/entity/list1",arg.GetString(),x) != 1) 
 | 
        { 
 | 
            trace(x.text()); 
 | 
            return -1; 
 | 
        } 
 | 
        dw_detail.Retrieve(x); 
 | 
        dw_detail.Redraw(); 
 | 
        dw_detail.SetReadOnly(ismodify);         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    int OnPreSave() 
 | 
    { 
 | 
        if (dw_list) 
 | 
        { 
 | 
            xstring colorCardCName; 
 | 
            xstring colorCardName; 
 | 
            xstring orgID; 
 | 
            int i; 
 | 
            int row = dw_list.GetRowCount(); 
 | 
            for (i=1; i<=row;i++) 
 | 
            { 
 | 
                colorCardCName=dw_list.GetItemString(i,L"ColorCardCName")+L""; 
 | 
                colorCardName=dw_list.GetItemString(i,L"ColorCardName")+L""; 
 | 
                orgID=dw_list.GetItemString(i,L"OrgID")+L""; 
 | 
                if (colorCardCName==L"" || !colorCardCName) 
 | 
                { 
 | 
                    alert(L"µÚ"+xstring(i)+L"ÐÐÉ«¿¨Ãû³ÆÖÐÎÄΪ¿Õ"); 
 | 
                    return -1; 
 | 
                } 
 | 
                if (colorCardName==L"" || !colorCardName) 
 | 
                { 
 | 
                    alert(L"µÚ"+ xstring(i) +L"ÐÐÉ«¿¨Ãû³ÆÎª¿Õ"); 
 | 
                    return -1; 
 | 
                } 
 | 
                if (orgID==L"" || !orgID) 
 | 
                { 
 | 
                    alert(L"µÚ"+ xstring(i) +L"ÐйØÁª×é֯Ϊ¿Õ"); 
 | 
                    return -1; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
     
 | 
        return 1 ; 
 | 
    } 
 | 
     
 | 
    //±£´æ 
 | 
    int OnSave() 
 | 
    { 
 | 
        dw_list.AcceptText(); 
 | 
        dw_detail.AcceptText(); 
 | 
        int rec; 
 | 
        rec = OnPreSave(); 
 | 
        if (rec == -1)     
 | 
            return -1; 
 | 
        xml x; 
 | 
         
 | 
        dw_list.DwUpdateAllToEx(x);  
 | 
        xaserverarg arg; 
 | 
         
 | 
        KXMLDOMElement e=  x.selectSingleNode(L"root"); 
 | 
        arg.AddArg(L"content",e.xml());                             
 | 
        arg.AddArg(L"dbmap",L"ColorCard.dbmap"); 
 | 
        if (xurl::get(L"ColorCard/pref/colorcard.save",arg.GetString(),x) != 1) 
 | 
        { 
 | 
            trace(L"error:"+(xstring)x.xml()); 
 | 
            alert(L"±£´æÊ§°Ü!"); 
 | 
            return 0; 
 | 
        }                         
 | 
        else 
 | 
        {     
 | 
            alert(L"±£´æ³É¹¦!");         
 | 
            dw_list.ResetUpdateStatus();                             
 | 
        } 
 | 
        dw_list.Redraw();     
 | 
    } 
 | 
     
 | 
    //ÐÂÔö 
 | 
    int OnAdd() 
 | 
    { 
 | 
        dw_list.AcceptText(); 
 | 
        int nrow=dw_list.InsertRow(0); 
 | 
        dw_list.ShowRowTo(nrow); 
 | 
        xstring tempguid = publiccode::GetGuid(); 
 | 
        dw_list.SetItemString(nrow,L"ColorCardID",tempguid); 
 | 
        OnRetrieveDetail(tempguid); 
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    //²åÈë 
 | 
    int OnInsert() 
 | 
    { 
 | 
        dw_list.AcceptText(); 
 | 
        int row = dw_list.GetRow(); 
 | 
        if(row<1) return 0; 
 | 
        int nrow=dw_list.InsertRow(row); 
 | 
        xstring tempguid = publiccode::GetGuid(); 
 | 
        dw_list.SetItemString(nrow,L"ColorCardID",tempguid); 
 | 
        OnRetrieveDetail(tempguid); 
 | 
    } 
 | 
     
 | 
    //ɾ³ý 
 | 
    int OnDelete() 
 | 
    { 
 | 
        dw_list.AcceptText();                     
 | 
        int row = dw_list.GetRow(); 
 | 
        if(row<1) return 0; 
 | 
        xstring id=dw_list.GetItemString(row,L"ColorCardID"); 
 | 
        if(DeleteProcessAction(id,L"DeleteColorCard")<0) 
 | 
        { 
 | 
            alert(L"ÄúûÓÐȨÏÞɾ³ý¸ÃÊý¾Ý"); 
 | 
            return -1; 
 | 
        } 
 | 
        if(id !=L"") 
 | 
        { 
 | 
            xml x; 
 | 
             
 | 
            xaserverarg arg; 
 | 
             
 | 
            arg.AddArg(L"ColorCardID", id); 
 | 
            if(xurl::get(L"ColorCard/pref/beforedelete",arg.GetString(),x)!=1) 
 | 
            { 
 | 
                trace(L"error:"+(xstring)x.xml()); 
 | 
                alert(L"ɾ³ý³ö´í!"); 
 | 
                return 0; 
 | 
            } 
 | 
            KXMLDOMElement e= x.documentElement(); 
 | 
            if(e.selectSingleNode(L"error"))  
 | 
            { 
 | 
                alert(e.selectSingleNode(L"error").text()); 
 | 
                return 0; 
 | 
            }                     
 | 
        }                     
 | 
        dw_list.DeleteRow(row);          
 | 
    } 
 | 
     
 | 
    int OnAddRowDetail() 
 | 
    { 
 | 
        dw_detail.AcceptText(); 
 | 
        int nrow=dw_detail.InsertRow(0); 
 | 
        xstring tempguid = publiccode::GetGuid(); 
 | 
        dw_detail.SetItemString(dw_detail.GetRow(),L"ColorCardID",dw_list.GetItemString(dw_list.GetRow(),L"ColorCardID")); 
 | 
        dw_detail.SetItemString(dw_detail.GetRow(),L"ColorID",tempguid); 
 | 
        //OnRetrieveDetail(tempguid); 
 | 
        dw_detail.ShowRowTo(nrow); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    int OnInsertRowDetail() 
 | 
    { 
 | 
        dw_detail.AcceptText(); 
 | 
        int row = dw_detail.GetRow(); 
 | 
        if(row<1) return 0; 
 | 
        int nrow=dw_detail.InsertRow(row); 
 | 
        xstring tempguid = publiccode::GetGuid(); 
 | 
        dw_detail.SetItemString(dw_detail.GetRow(),L"ColorCardID",dw_list.GetItemString(dw_list.GetRow(),L"ColorCardID")); 
 | 
        dw_detail.SetItemString(dw_detail.GetRow(),L"ColorID",tempguid); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    int OnDelRowDetail() 
 | 
    { 
 | 
        int row = dw_detail.GetRow(); 
 | 
        int rowz = dw_list.GetRow(); 
 | 
        if(row<1)return 0; 
 | 
        dw_detail.DeleteRow(row); 
 | 
        KXMLDOMElement ez= dw_list.GetRowElement(rowz); 
 | 
        xml xz;             
 | 
        dw_detail.DwUpdateAllToEx(xz);     
 | 
        if (ez.selectSingleNode(L"root"))         
 | 
            ez.removeChild(ez.selectSingleNode(L"root")); 
 | 
        ez.appendChild(xz.documentElement()); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    //ÃüÁî·¢²¼º¯Êý 
 | 
    int OnCmdDispatch(xstring comdid) 
 | 
    { 
 | 
        if(comdid==L"save") OnSave(); 
 | 
        else if(comdid==L"add") OnAdd(); 
 | 
        else if(comdid==L"insert") OnInsert(); 
 | 
        else if(comdid==L"del") OnDelete(); 
 | 
        else if(comdid==L"addrowDetail") OnAddRowDetail(); 
 | 
        else if(comdid==L"insertrowDetail") OnInsertRowDetail(); 
 | 
        else if(comdid==L"deleterowDetail") OnDelRowDetail(); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    //ÃüÁî´¦Àíʼþ 
 | 
    int OnXCommand(TEvent* evt, LPARAM param) 
 | 
    { 
 | 
        return OnCmdDispatch(evt->xcommand.pStrID); 
 | 
    } 
 | 
     
 | 
    //Ðиıäʼþ 
 | 
    int OnListRowChanged(TEvent* evt, int p) 
 | 
    { 
 | 
        dw_detail.AcceptText(); 
 | 
  
 | 
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; 
 | 
        int row = hdr.row; 
 | 
        dw_list.Redraw();                     
 | 
        KXMLDOMElement e = dw_list.GetRowElement(row); 
 | 
        xstring ColorCardID = e.selectSingleNode(L"ColorCardID").text();  
 | 
        OnRetrieveDetail(ColorCardID); 
 | 
         
 | 
        return 1;     
 | 
    } 
 | 
     
 | 
    int OnDetailChanged(TEvent* evt, int p) 
 | 
    { 
 | 
        int row = dw_list.GetRow(); 
 | 
        KXMLDOMElement e= dw_list.GetRowElement(row); 
 | 
        xml x; 
 | 
                         
 | 
        dw_detail.DwUpdateAllToEx(x);             
 | 
        if (e.selectSingleNode(L"root"))         
 | 
            e.removeChild(e.selectSingleNode(L"root")); 
 | 
        e.appendChild(x.documentElement()); 
 | 
         
 | 
        return 0; 
 | 
    } 
 | 
     
 | 
    int OnDwListClick(TEvent* evt, int p) 
 | 
    {                 
 | 
        DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; 
 | 
        int row = hdr.row; 
 | 
        dw_list.Redraw();                     
 | 
        KXMLDOMElement e = dw_list.GetRowElement(row); 
 | 
        xstring ColorCardID = e.selectSingleNode(L"ColorCardID").text(); 
 | 
        ModifyProcessAction(ColorCardID,L"ModifyColorCard"); 
 | 
         
 | 
        return 1;     
 | 
    } 
 | 
     
 | 
    int OnAttachEvent() 
 | 
    { 
 | 
        //°ó¶¨¹¤¾ßÌõµã»÷ʼþ 
 | 
        AttachEvent(L"WM_XCOMMAND", (FEvent)&ColorCardNew::OnXCommand); 
 | 
        //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ 
 | 
        AttachEvent(L"WM_SETFOCUS", (FEvent)&ColorCardNew::OnSetFocus); 
 | 
        //Ðиıäʼþ 
 | 
        AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&ColorCardNew::OnListRowChanged); 
 | 
        AttachEvent(L"dw_detail",L"DWV_ITEMCHANGED", (FEvent)&ColorCardNew::OnDetailChanged); 
 | 
        //AttachEvent(L"dw_list",L"DWV_ITEMCHANGED",OnDetailChanged);     
 | 
        AttachEvent(L"dw_list",L"DWV_CLICKED", (FEvent)&ColorCardNew::OnDwListClick); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    int  OnRetrieve(xstring str) 
 | 
    { 
 | 
        xml x; 
 | 
         
 | 
        xaserverarg arg; 
 | 
         
 | 
        arg.AddArg(L"id",str);     
 | 
        if (xurl::get(L"ColorCard/entity/list",arg.GetString(),x) != 1) 
 | 
        { 
 | 
            trace(x.text()); 
 | 
            return -1; 
 | 
        }                 
 | 
        //doc=x; 
 | 
        dw_list.Retrieve(x); 
 | 
        dw_list.Redraw(); 
 | 
  
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int OnInitial() 
 | 
    { 
 | 
        SetAgent(); 
 | 
  
 | 
        OnAttachEvent(); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
     
 | 
    int onload() 
 | 
    { 
 | 
  
 | 
        dw_list = GetControl(L"dw_list"); 
 | 
        dw_list.openUrl(L"²úÆ·ÉèÖÃ.vface/template/ColorCard/list");     
 | 
         
 | 
        dw_detail = GetControl(L"dw_detail"); 
 | 
        dw_detail.openUrl(L"²úÆ·ÉèÖÃ.vface/template/ColorCard/listex");     
 | 
        OnInitial(); 
 | 
  
 | 
        OnRetrieve(L"FND_ColorCard"); 
 | 
         
 | 
        return 1; 
 | 
    } 
 | 
}; 
 |