use"lang.vl" use "win.vl" use "treeview.vm" use "file.vl" use "dev:vm[xdwtable.vm]" unit vbusiness.vpage [ SKUItemcategoryselect is extend TProduct; about SKUItemcategoryselect [ field: xdwtable__ dw_category; method: [ treeview__ tv_gs; //ÃüÁî·¢²¼º¯Êý string GetPath(int tv, int h) { string str = treeview__::GetItemLabel(tv, h); int k = treeview__::GetParentItem(tv, h); int r = treeview__::GetRootItem(tv); while(k > 0 && r != k) { string tmp = treeview__::GetItemLabel(tv, k); str = tmp+"\\" + str; k = treeview__::GetParentItem(tv, k); } return str; } int xunhuan(int pItem, int hItem) { xdwtable__ dw = new xdwtable__; dw.setNativePointer(dw_category.FindDwTable("Item",0)); if(treeview__::GetChecked(tv_gs.GetId(),hItem) > 0) { msxml::IXMLDOMElement e = treeview__::GetItemData(tv_gs.GetId(),hItem); string id = e.selectSingleNode("CategoryID").text; string Name =GetPath(tv_gs.GetId(), hItem); trace(Name); if(dw.GetItemString(1,"CategoryID")=="") { dw.ItemChangeTo(1,"CategoryID",id); dw.ItemChangeTo(1,"Category",Name); } else { int n=dw.InsertRow(0); dw.ItemChangeTo(n,"CategoryID",id); dw.ItemChangeTo(n,"Category",Name); } } int cItem = treeview__::GetChildItem(tv_gs.GetId(), hItem); if(cItem > 0) { xunhuan(pItem,cItem); } int nItem = treeview__::GetNextItem(tv_gs.GetId(), hItem); if(nItem > 0) { xunhuan(pItem,nItem); } return 1; } int OnCmdDispatch(string comdid) { if(comdid=="ok") { int hitem = treeview__::GetSelectedItem(tv_gs.GetId()); if (hitem >0) { msxml::IXMLDOMElement ele=treeview__::GetItemData(tv_gs.GetId(),hitem); string guid = ele.selectSingleNode("CategoryID").text; //string label = ele.selectSingleNode("CName").text; string label = GetPath(tv_gs.GetId(), hitem); trace(label); xunhuan(hitem, treeview__::GetChildItem(tv_gs.GetId(), treeview__::GetRootItem(tv_gs.GetId()))); win__::CloseWindow(); } return 1; } if(comdid=="close") win__::CloseWindow(); return 0; } int OnCmdDispatch0(string comdid) { xaserverarg__ arg = new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg = win__::GetParam(); arg.AddArg("comdid",comdid); int xitem = treeview__::GetSelectedItem(tv_gs.GetId()); if(comdid=="ok" && xitem != 0) { msxml::IXMLDOMElement e=treeview__::GetItemData(tv_gs.GetId(),xitem); string sHasChild=e.selectSingleNode("@HasChild").text; if(treeview__::GetChildItem(tv_gs.GetId(),xitem)>0 || sHasChild=="1") { alert("Ìáʾ£ºÇëÑ¡Ôñ×îºóÒ»¼¶Àà±ð!"); return 0; } string ID = e.selectSingleNode("CategoryID").text; string CName = e.selectSingleNode("CName").text; trace(CName); string ruler; if(e.selectSingleNode("SpecRule")) ruler = e.selectSingleNode("SpecRule").text; else ruler =""; arg.AddArg("CategoryID",ID); arg.AddArg("CName",CName); arg.AddArg("SpecRule",ruler); } win__::CloseWindow(); return 0; } //ÃüÁî´¦Àíʼþ int OnXCommand(ref TXCommandEvent evt,int p) { return OnCmdDispatch(evt.pStrID); } int CreateSubTree(int pitem){ msxml::IXMLDOMElement sitemdata=treeview__::GetItemData(tv_gs.GetId(), pitem); string sHasChild=sitemdata.selectSingleNode("@HasChild").text;//sitemdata.getAttribute("HasChild"); string pid=sitemdata.selectSingleNode("CategoryID").text; //trace(sHasChild+"sdaga"+pid); if(sHasChild=="1"){//Êý¾ÝÓÐ×Ó½Úµã int citem=treeview__::GetChildItem(tv_gs.GetId(), pitem); //alert(string(citem)); if (citem==0){//Ê÷ÊÓͼÓÐ×Ó½Úµã xml__ x=new xml__; x.setNativePointer(xml__::CreateInstance()); xaserverarg__ arg=new xaserverarg__; arg.setNativePointer(arg.CreateInstance()); arg.AddArg("parentID",pid); //if(xaserver__::ExecXQuery(GetServerUrl(),"[ItemCategoryEx.xq]",arg.GetString(),x)!=1) if(url::get(GetEntityName(1)+"/entity/category",arg.GetString(),x)!=1) { trace(x.GetXml()); return 0; } //trace(x.GetXml()); var list=x.GetXmlDoc().selectNodes("root/Category"); int i=0,s=list.length; msxml::IXMLDOMElement xitem; for (i=0;i"+rootid+""); int hroot=treeview__::InsertItem(tv_gs.GetId(),"¹«Ë¾²úÆ·Àà±ð", x.GetXmlDoc().documentElement, 17); CreateSubTree(hroot); treeview__::ExpandItemEx(tv_gs.GetId(),hroot); return 1; } int OnTreeExpanding(ref TNotifyEvent evt,int p) { ref NMTREEVIEW nmtv = evt.pnmh; int sitem = nmtv.itemNew.hItem; CreateSubTree(sitem); return 1; } int OnAttachEvent() { //°ó¶¨¹¤¾ßÌõµã»÷ʼþ AttachEvent("WM_XCOMMAND",OnXCommand); //»ñµÃÊ÷µÄÕ¹¿ªÊ¼þ AttachEvent("tv_gs", "TVN_ITEMEXPANDING",OnTreeExpanding); } int onload() { if (GetParam()) { xaserverarg__ arg1=GetParam(); dw_category = new xdwtable__; dw_category.setNativePointer(arg1.GetArgString("dw_category").toInt()); } tv_gs = new treeview__; tv_gs.setNativePointer(GetControl("tv_gs")); CreateRootTree(); OnAttachEvent(); return 1; } ] ] ]