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("<data/>");
|
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;
|
}
|
};
|
]
|