use "xcontrol.vframe.vbusiness.vd" use "xbase.vframe.vbusiness.vd" use "base.view.vd" use "datastore_bind.vd" unit trade [ class AssignAdjustWin : public xframe { xdwgrid dw_list; xnode m_agentNode; //Agent Condition msxml::IXMLDOMElement rptEle; string argStr; string searchStr; int hWndRetrieveTip; bool dataretrieveing; int SetAgent() { string xfNodeAgentArea = "agentarea"; xnode anode = GetAgentNode(xfNodeAgentArea); if(m_agentNode) { SetAgentNodeContent (anode,m_agentNode); } else { msxml::IXMLDOMElement xframeElement = GetElement(); msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*"); if(agent) { string s = agent.xml; m_agentNode = SetAgentNodeContent (anode,s); } } return 1; } int OnSave() { xml x = new xml; x.setNativePointer(xml::CreateInstance()); dw_list.AcceptText(); dw_list.DwUpdateAllToEx(x.GetXmlDoc()); xaserverarg arg = new xaserverarg; arg.setNativePointer(xaserverarg::CreateInstance()); xml x0 = ViewObject::MakeXml(); x0.LoadXml(""); msxml::IXMLDOMNodeList t = x.GetXmlDoc().selectNodes("data/node()[(@update.new='1') or (@update.modify='1') or (@update.delete='1') ]"); msxml::IXMLDOMElement e1= x0.GetXmlDoc().documentElement; string val0 = x.GetXml(); for(int i=0; i < t.length; i++) { msxml::IXMLDOMElement e= t.item(i); e1.appendChild(e); } x = ViewObject::RetrieveData(rptEle.getAttribute("update"),"content",x0.GetXml()); string str = x.GetXmlDoc().documentElement.getAttribute("text"); if(str == "true") { dw_list.ResetUpdateStatus(); alert("±£´æ³É¹¦!"); }else { alert("±£´æÊ§°Ü!"); } return 1; } //½¹µã¼¤»î´¦Àíº¯Êý int OnSetFocus(ref TEvent evt,int param) { //ÖØÖù¤¾ßÌõ SetAgent(); return 1; } int OnMultiDeal() { dw_list.AcceptText(); int row = dw_list.GetNextSelectRow(1); string SalespersonID = dw_list.GetItemString(row, "SalespersonID"); string Sales = dw_list.GetItemDisplayString(row, "SalespersonID"); while(row > 0 && row <= dw_list.GetRowCount()) { row = dw_list.GetNextSelectRow(row + 1); dw_list.SetItemString(row, "SalespersonID", SalespersonID); dw_list.SetItemDisplayString(row, "SalespersonID", Sales); } dw_list.Redraw(); } int OnSearch() { xaserverarg arg=new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("text", searchStr); OpenWindow("dev:xpage[search.dialog.vx]", cast(arg as int)); string str = arg.GetArgString("text"); if(str != searchStr) { searchStr = str; dw_list.Filter("*",searchStr); return 1; } return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { if(comdid=="xmSave")return OnSave(); if(comdid=="xmMultiDeal")return OnMultiDeal(); if(comdid=="xmSearch") return OnSearch(); if(comdid=="xmAnalysis") { //hCursor = xutil::SetCursorWait(); string str = dw_list.DataAnalysis(""); xaserverarg arg=new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("html", str); int obj = cast(dw_list as int); arg.AddArg("obj",obj.toString()); OpenWindow("dev:xpage[data.vanalysis.vx]", cast(arg as int)); //xutil::RestoreCursor(hCursor); return 1; } if(comdid=="xmQuery") { if(rptEle) { string argUrl = rptEle.getAttribute("arg"); if(argUrl !="") { xaserverarg ar = new xaserverarg; ar.setNativePointer(ar.CreateInstance()); ar.AddArg("argurl",argUrl); if(argStr !="") ar.AddArg("arg",argStr); OpenWindow("dev:xpage[view.total.arg.vx]",cast(ar as int)); string arstr = ar.GetArgString("arg"); if(arstr != "" && ar.GetArgString("action")=="ok") { argStr = arstr; OnRetrieve(rptEle.getAttribute("data"),argStr); } } else { argStr=""; OnRetrieve(rptEle.getAttribute("data"),argStr); } } return 1; } return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt,int param) { return OnCmdDispatch(evt.pStrID); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND",OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent("WM_SETFOCUS",OnSetFocus); AttachEvent("cb_report","CBN_SELCHANGE",OnCombboChanged); } int OnCombboChanged(ref TCommandEvent evt,int lParam) { int h = xcombobox::GetCurSel(evt.hCtrl); if(h > -1) ShowList(h); return 1; } int SwitchReport(msxml::IXMLDOMElement e) { rptEle = e; string dwname = e.getAttribute("template"); dw_list.openUrl(dwname); dw_list.Redraw(); return 1; } int ShowList(int h) { msxml::IXMLDOMElement xframeElement = GetElement(); msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xcombobox[@name='cb_report']/item["+(h+1).toString()+"]"); if(e) SwitchReport(e); win32::PostMessage(GetHWND(),0x401,"xmQuery",0); return 1; } int ShowRetrieveingTip() { dataretrieveing = true; xwin pwin = OpenWindow("dev:xpage[TestRetrieveing.vx]",0); hWndRetrieveTip =pwin.GetHWND(); return 1; } int CloseRetrieveTip() { dataretrieveing = false; win32::SendMessage(hWndRetrieveTip,0x401,"RetrieveFinished",0); hWndRetrieveTip = 0; return 1; } int OnRetrieve(string dataurl, string argstr) { if(!rptEle) return 0; dw_list.Reset(); xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("arg",argstr); if (url::get(dataurl,arg.GetString(),x)!=1) { trace("´íÎóÐÅÏ¢="+x.GetXmlDoc().text); dw_list.Redraw(); return -1; }else { dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetSelectionMode(4); //dw_list.SetReadOnly(true); } return 1; } int onload() { rptEle = 0; dw_list = GetControl("dw_list"); OnAttachEvent(); hWndRetrieveTip = 0; dataretrieveing = false; ShowList(0); return 1; } int onloaded() { SetAgent(); return 1; } }; ]