#include #include #include #include #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" #include "viewobject/view.base.hpp" using xml = KXMLDOMDocument; class ViewManpowerFileList : public xframe { xdwgrid dw_list;//hxsoft.com -> Developer -> wface -> vcontrol int hSignWin; xdwtable dw_arg; xnode m_agentNode; //Agent Condition string urlTree; xtreeview tv_folder; //Õ¹¿ª×ÓÎļþ int ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement) { msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item"); int len = nlist.length; for (int i = 0; i < len; i++) { msxml::IXMLDOMElement e = nlist.item(i); string name = e.getAttribute("name"); string sImage = e.getAttribute("image"); string child = e.getAttribute("child"); int image = 15; if (sImage) image = sImage.toInt(); int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image); if (child != "no") tv_folder.SetItemChild(h, 1); ExpandChildFolder(h, e); } return 1; } int InitialFolder() { msxml::IXMLDOMElement xframeElement = GetElement(); msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial"); if (e) ExpandChildFolder(0, e); return 1; } int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image) { msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item"); int len = nlist.length; if (len > 0) tv_folder.SetItemChild(hItem, 1); for (int i = 0; i < len; i++) { msxml::IXMLDOMElement e = nlist.item(i); string name = e.getAttribute("name"); int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image); ExpandCatChildFolder(h, e, 35); } return 1; } int ExpandFolderItem(int hItem) { xml x = ViewObject::RetrieveData(urlTree); if (!x) return 0; msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("/data/item"); int len = nlist.length; for (int i = 0; i < len; i++) { msxml::IXMLDOMElement e = nlist.item(i); string name = e.getAttribute("name"); int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35); ExpandCatChildFolder(h, e, 35); } return 1; } 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 OnSetFocus(ref TEvent evt, int param) { //ÖØÖù¤¾ßÌõ SetAgent(); return 1; } int OnOpenAddWindow() { OpenWindow("dev:xpage[ManpowerFileWindow.vx]"); return 1; } int OnOpenUpdateWindow() { int row = dw_list.GetRow(); if (row < 1) return 1; msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); string mfid = ele.selectSingleNode("mfid").text;//»ñÈ¡½ÚµãµÄÖµ OpenWindow("dev:xpage[ManpowerFileWindow.vx]", cast(mfid as int)); return 1; } int OnExchangeFileWindow() { xwin xw = OpenWindow("dev:xpage[BlankExcelTemplate.vx]", 0); hSignWin = xw.GetHWND(); return 1; } int OnDelete() { int MB_OKCANCEL = 1; int IDOK = 1; int ret = win32::MessageBox(GetHWND(), "È·ÈÏɾ³ý?", "Ìáʾ", MB_OKCANCEL); if (ret == IDOK) { int row = dw_list.GetRow(); if (row < 1) return 1; msxml::IXMLDOMElement ele = dw_list.GetRowElement(row); string mfid = ele.selectSingleNode("mfid").text;//²é¿´ xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg;//·ÅÖòÎÊý arg.setNativePointer(arg.CreateInstance()); arg.AddArg("mfid", mfid); if (getUrl("/sale/data/ManpowerFile/delete", arg.GetString(), x) != 1) { string error = x.GetXmlDoc().text; alert("err:" + error); return 1; } alert(x.GetXmlDoc().text); OnRefresh(); } return 1; } int OnRefresh() { OnRetrieve(); return 1; } //·ÖÎö int OnAnalysis() { int 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; } string GetQueryArg() { dw_arg.AcceptText(); xml x = new xml; x.setNativePointer(xml::CreateInstance()); dw_arg.DwUpdateAllTo(x.GetXmlDoc()); return x.GetXml(); } int OnRetrieveEx1() { int hItem = tv_folder.GetSelectedItem(); if (hItem <= 0) return 1; int hCursor = xutil::SetCursorWait(); msxml::IXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement); string no = e1.getAttribute("no"); xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg; arg.setNativePointer(arg.CreateInstance()); //arg.AddArg("QueryTxt",GetControl("sle_search").GetText()); arg.AddArg("QueryArg", GetQueryArg()); arg.AddArg("MStatus", no); arg.AddArg("QueryName", GetControl("QueryName").GetText()); //trace(arg.GetString()); if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1) { trace(x.GetXmlDoc().text); return -1; } else { dw_list.Retrieve(x); dw_list.Redraw(); dw_list.SetReadOnly(true); dw_list.SetSelectionMode(1); } return 1; } //ÃüÁî·¢²¼º¯Êý int OnCmdDispatch(string comdid) { if (comdid == "xmAddHumanDocument") return OnOpenAddWindow(); else if (comdid == "xmUpdateHumanDocument") return OnOpenUpdateWindow(); else if (comdid == "xmRefresh" || comdid == "xmSearch") return OnRetrieveEx1(); else if (comdid == "xmExchangeFile") return OnExchangeFileWindow(); else if (comdid == "xmDelete") return OnDelete(); else if (comdid == "xmAnalysis") return OnAnalysis(); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt, int param) { return OnCmdDispatch(evt.pStrID); } int OnDoubleClicked(ref TNotifyEvent evt, int p) { return OnCmdDispatch("xmUpdateHumanDocument"); } int OnTreeSelChanged(ref TNotifyEvent evt, int p) { return OnRetrieveEx1(); } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND", OnXCommand); //»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ AttachEvent("WM_SETFOCUS", OnSetFocus); AttachEvent("dw_list", "DWV_DOUBLECLICKED", OnDoubleClicked);//ÐÐË«»÷ AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //Ê÷Ñ¡Ôñ } //Êý¾Ý´«Ê亯Êý int OnRetrieve() { //int hCursor = xutil::SetCursorWait();//Êó±êλÖà xml x = new xml; x.setNativePointer(xml::CreateInstance()); xaserverarg arg = new xaserverarg;//·ÅÖòÎÊý arg.setNativePointer(arg.CreateInstance()); //arg.AddArg("QueryTxt",GetControl("sle_search").GetText());//Ìí¼ÓËùÐèÒª´«µ½ºǫ́µÄ²ÎÊý arg.AddArg("QueryArg", GetQueryArg()); arg.AddArg("MStatus", ""); arg.AddArg("QueryName", GetControl("QueryName").GetText()); //trace("²é¿´arg="+arg.GetString());//ÔËÐнçÃæ´òÓ¡ if (getUrl("/sale/data/ManpowerFile/list", arg.GetString(), x) != 1)///sale/data/ManpowerFile/doclistºǫ́½Ó¿Ú { trace(x.GetXmlDoc().text); return -1; } else { dw_list.Retrieve(x); dw_list.Redraw(); } return 1; } int onload() { //¡¾1¡¿¿ØÖÆÒ³ÃæÖÐname="dw_list"µÄÄÚÈÝ dw_list = GetControl("dw_list"); //¡¾2¡¿¼ÓÔØsale¸ùĿ¼ÏÂviewϵÄManpowerFile.vfaceÎļþÖеÄtemplate/list url ǰ¶ËÒ³Ãæ dw_list.openUrl("/sale/view/ManpowerFile/template/list"); //¡¾3¡¿°ó¶¨Ê¼þ OnAttachEvent(); //¡¾4¡¿¼ÓÔØºǫ́Êý¾Ý //¡¾6¡¿ÉèΪֻ¶Á dw_list.SetReadOnly(true); dw_arg = GetControl("dw_arg"); dw_arg.openUrl("/sale/view/ManpowerFile/template/QueryArg"); dw_arg.SetColHeaderHeight(0); dw_arg.SetRowSelectorWidth(0); dw_arg.SetHScrollState(false); dw_arg.SetVScrollState(false); dw_arg.SetItemString(1, "DateType", "²»É趨"); OnRetrieve(); urlTree = "/sale/data/ManpowerFile/folder"; tv_folder = GetControl("tv_folder"); tv_folder.SetLineAtRoot(true); InitialFolder(); return 1; } int onloaded() { SetAgent(); int hItem = tv_folder.GetRootItem(); ExpandFolderItem(hItem); tv_folder.ExpandItem(hItem); tv_folder.ItemFocus(hItem); return 1; } }; ]