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