#include #include #include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class __declspec(dllexport) RefundSourcingLineMaintListView : public xframe { public: xdwgrid dw_list; xdwtable dw_arg; xnode m_agentNode; //Agent Condition xstring str_url ; xstring m_entityid; public: RefundSourcingLineMaintListView(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} public: static RefundSourcingLineMaintListView* CreateInstance(void* implPtr, void* hWnd) { RefundSourcingLineMaintListView* pWin = new RefundSourcingLineMaintListView(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 OnSave() { dw_list.AcceptText(); if(dw_list.GetRowCount()>0) { if(dw_list.GetItemString(dw_list.GetRowCount(),L"ÐòºÅ")==L"") dw_list.DeleteRow(dw_list.GetRowCount()); } xml x ; KXMLDOMDocument xdoc = x; dw_list.DwUpdateAllToEx(xdoc); xaserverarg arg ; arg.AddArg(L"content",x.xml()); if(xurl::get(L"/sale/data/Gdn/update/RefundSourcingLine", arg.GetString(),x)!=1) { xstring error = x.text(); alert(L"err:"+error); alert(L"±£´æÊ§°Ü!"); return -1; } xstring str = x.documentElement().getAttribute(L"text"); if(str == L"false") { alert(L"Êý¾Ý±£´æÊ§°Ü!"); return -1; } dw_list.ResetUpdateStatus(); alert(L"Êý¾Ý±£´æÍê³É!"); return 1; } xstring GetEntityName(LPARAM pr) { return L"RefundSourcingLine"; } xstring GetEntityID(LPARAM pr) { int row = dw_list.GetRow(); xstring id = dw_list.GetItemString(row,m_entityid.c_str()); return id; } int ProcessUsedArg(xaserverarg arg) { xstring EntityIDList = L""; int ll_row = dw_list.GetNextSelectRow(1); while(ll_row > 0 && ll_row <= dw_list.GetRowCount()) { xstring id=dw_list.GetItemString(ll_row,m_entityid.c_str()); if(EntityIDList == L"") EntityIDList = id; else EntityIDList += L"" + id; ll_row = dw_list.GetNextSelectRow(ll_row + 1); } if(EntityIDList != L"") arg.AddArg(L"EntityID",EntityIDList); return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(TEvent* evt, LPARAM param) { //ÖØÖù¤¾ßÌõ //SetAgent(L"list",GetEntityID(1)); SetAgent(); return 1; } int OnItemChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; xstring colname=hdr.colname; xstring value = hdr.data; xstring dwname = L"dw_list"; if(value != L"") { KXMLDOMNodeList nlist = GetElement().selectNodes(L"//*[@name='"+dwname+L"']/trans[@for='"+colname+L"']"); ViewObject::TransData(nlist, dw_list, hdr.row, colname, value); } return 1; } int OnAdd() { dw_list.InsertRow(0); return 1; } int OnDelete() { int row = dw_list.GetRow(); if(row < 1) return 1; if (MessageBox(GetHWND(),L"ÊÇ·ñɾ³ý´ËÊý¾Ý!",L"Ìáʾ",1) == 2) return 1; dw_list.DeleteRow(0); return 1; } int OnSearch() { xml x ; xaserverarg arg ; arg.AddArg(L"query",GetQueryArg()); if (getUrl(str_url,arg.GetString(),x)!=1) { trace(x.text()); return -1; }else { dw_list.Retrieve(x); dw_list.Redraw(); } return 1; } int OnRowChanged(TEvent* evt, LPARAM p) { DWNMHDR& hdr = *(DWNMHDR*)evt->notify.pnmh; int row = hdr.row; //SetAgent(L"list",dw_list.GetItemString(row,m_entityid)); return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(xstring comdid) { if(comdid == L"action:bill.new") return OnAdd(); else if(comdid == L"action:bill.delete") return OnDelete(); else if(comdid == L"action:bill.update") return OnSave(); else if(comdid == L"xmSearch") return OnSearch(); else if(comdid.find(L"action:",0)>=0) { int ret = ProcessFlowAction(comdid, 1); } return 0; } int ViewUpdate(LPARAM pr,xstring updateItem,xaserverarg arg) { if( updateItem==L"setstate") { //OnRetrieve(query); } return 1; } //ÃüÁî´¦Àíʼþ int OnXCommand(TEvent* evt, LPARAM param) { return OnCmdDispatch(evt->xcommand.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent(L"WM_XCOMMAND", (FEvent)&RefundSourcingLineMaintListView::OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent(L"WM_SETFOCUS", (FEvent)&RefundSourcingLineMaintListView::OnSetFocus); AttachEvent(L"dw_list",L"DWV_ITEMCHANGED", (FEvent)&RefundSourcingLineMaintListView::OnItemChanged); //AttachEvent(L"dw_list",L"DWV_DOUBLECLICKED",OnUpdate);//ÐÐË«»÷ AttachEvent(L"dw_list",L"DWV_ROWFOCUSCHANGED", (FEvent)&RefundSourcingLineMaintListView::OnRowChanged);//°ó¶¨Ðиü¸Ä´¥·¢Ê¼þOnRowChanged return 1; } xstring GetQueryArg() { dw_arg.AcceptText(); xml x ; dw_arg.DwUpdateAllTo(x); return x.xml(); } int OnRetrieve(xstring query) { xml x ; xaserverarg arg ; arg.AddArg(L"query",query); arg.AddArg(L"QueryArg",L""); if (getUrl(str_url,arg.GetString(),x)!=1) { trace(L"´íÎóÐÅÏ¢=L"+(xstring)x.text()); return -1; }else { dw_list.Retrieve(x); dw_list.Redraw(); } //dw_list.SetSelectionMode(3); return 1; } int onload() { str_url = L"/sale/data/GDN/fetch/RefundSourcingLine"; dw_list = GetControl(L"dw_list"); dw_list.SetDataObject(GetServerUrl(),L"dev:sheet[list.RefundSourcingLine.Entity.xarch.tpl/ÍË˰½ø»õÃ÷ϸ]"); //dw_list.SetSelectionMode(1); dw_arg = GetControl(L"dw_arg"); dw_arg.SetDataObject(GetServerUrl(),L"dev:sheet[list.RefundSourcingLine.Entity.xarch.tpl/ÍË˰½ø»õÃ÷ϸ²ÎÊý]"); dw_arg.SetColHeaderHeight(0); dw_arg.SetRowSelectorWidth(0); dw_arg.SetHScrollState(false); dw_arg.SetVScrollState(false); dw_list.SetColumnState(L"CIEID", false); dw_list.SetColumnState(L"CommDate", false); //dw_list.SetReadOnly(true); OnAttachEvent(); return 1; } int onloaded() { SetAgent(); OnRetrieve(L""); return 1; } };