¶Ô±ÈÐÂÎļþ |
| | |
| | | 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; |
| | | //å½ä»¤åå¸å½æ° |
| | | xstring GetPath(int tv, int h) |
| | | { |
| | | xstring str = treeview::GetItemLabel(tv, h); |
| | | int k = treeview::GetParentItem(tv, h); |
| | | int r = treeview::GetRootItem(tv); |
| | | while(k > 0 && r != k) |
| | | { |
| | | xstring tmp = treeview::GetItemLabel(tv, k); |
| | | str = tmp+L"\\" + str; |
| | | k = treeview::GetParentItem(tv, k); |
| | | } |
| | | return str; |
| | | } |
| | | int xunhuan(int pItem, int hItem) |
| | | { |
| | | xdwtable dw = new xdwtable; |
| | | dw.setNativePointer(dw_category.FindDwTable(L"Item",0)); |
| | | if(treeview::GetChecked(tv_gs.GetId(),hItem) > 0) |
| | | { |
| | | msxml::IXMLDOMElement e = treeview::GetItemData(tv_gs.GetId(),hItem); |
| | | xstring id = e.selectSingleNode(L"CategoryID").text; |
| | | xstring Name =GetPath(tv_gs.GetId(), hItem); |
| | | trace(Name); |
| | | if(dw.GetItemString(1,L"CategoryID")==L"") |
| | | { |
| | | dw.ItemChangeTo(1,L"CategoryID",id); |
| | | dw.ItemChangeTo(1,L"Category",Name); |
| | | } |
| | | else |
| | | { |
| | | int n=dw.InsertRow(0); |
| | | dw.ItemChangeTo(n,L"CategoryID",id); |
| | | dw.ItemChangeTo(n,L"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(xstring comdid) |
| | | { |
| | | if(comdid==L"ok") |
| | | { |
| | | int hitem = treeview::GetSelectedItem(tv_gs.GetId()); |
| | | if (hitem >0) |
| | | { |
| | | msxml::IXMLDOMElement ele=treeview::GetItemData(tv_gs.GetId(),hitem); |
| | | xstring guid = ele.selectSingleNode(L"CategoryID").text; |
| | | //xstring label = ele.selectSingleNode(L"CName").text; |
| | | xstring 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==L"close") |
| | | win::CloseWindow(); |
| | | return 0; |
| | | } |
| | | |
| | | int OnCmdDispatch0(xstring comdid) |
| | | { |
| | | xaserverarg arg = new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg = win::GetParam(); |
| | | arg.AddArg(L"comdid",comdid); |
| | | int xitem = treeview::GetSelectedItem(tv_gs.GetId()); |
| | | if(comdid==L"ok" && xitem != 0) |
| | | { |
| | | msxml::IXMLDOMElement e=treeview::GetItemData(tv_gs.GetId(),xitem); |
| | | |
| | | xstring sHasChild=e.selectSingleNode(L"@HasChild").text; |
| | | |
| | | if(treeview::GetChildItem(tv_gs.GetId(),xitem)>0 || sHasChild==L"1") |
| | | { |
| | | alert(L"æç¤ºï¼è¯·éæ©æåä¸çº§ç±»å«!"); |
| | | return 0; |
| | | } |
| | | |
| | | xstring ID = e.selectSingleNode(L"CategoryID").text; |
| | | xstring CName = e.selectSingleNode(L"CName").text; |
| | | trace(CName); |
| | | xstring ruler; |
| | | if(e.selectSingleNode(L"SpecRule")) |
| | | ruler = e.selectSingleNode(L"SpecRule").text; |
| | | else |
| | | ruler =L""; |
| | | arg.AddArg(L"CategoryID",ID); |
| | | arg.AddArg(L"CName",CName); |
| | | arg.AddArg(L"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); |
| | | xstring sHasChild=sitemdata.selectSingleNode(L"@HasChild").text;//sitemdata.getAttribute(L"HasChild"); |
| | | xstring pid=sitemdata.selectSingleNode(L"CategoryID").text; |
| | | //trace(sHasChild+L"sdaga"+pid); |
| | | if(sHasChild==L"1"){//æ°æ®æåèç¹ |
| | | int citem=treeview::GetChildItem(tv_gs.GetId(), pitem); |
| | | |
| | | //alert(xstring(citem)); |
| | | if (citem==0){//æ è§å¾æåèç¹ |
| | | xml x=new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | xaserverarg arg=new xaserverarg; |
| | | arg.setNativePointer(arg.CreateInstance()); |
| | | arg.AddArg(L"parentID",pid); |
| | | //if(xaserver::ExecXQuery(GetServerUrl(),L"[ItemCategoryEx.xq]",arg.GetString(),x)!=1) |
| | | if(url::get(GetEntityName(1)+L"/entity/category",arg.GetString(),x)!=1) |
| | | { |
| | | trace(x.GetXml()); |
| | | return 0; |
| | | } |
| | | //trace(x.GetXml()); |
| | | var list=x.GetXmlDoc().selectNodes(L"root/Category"); |
| | | int i=0,s=list.length; |
| | | msxml::IXMLDOMElement xitem; |
| | | for (i=0;i<s;i++){ |
| | | xitem=list.item(s - i - 1); |
| | | xstring Name=xitem.selectSingleNode(L"CName").text; |
| | | xstring Has2D=xitem.selectSingleNode(L"@Has2D").text;//item.getAttribute(L"Has2D"); |
| | | if (Has2D==L"1") |
| | | Name=Name+L"*"; |
| | | int kitem=treeview::InsertItem(tv_gs.GetId(), pitem,0,Name,xitem,15); |
| | | //int kitem=treeview::InsertChildItem(tv_gs.GetId(), pitem,Name,xitem,15); |
| | | xstring HasChild=xitem.selectSingleNode(L"@HasChild").text;//item.getAttribute(L"HasChild"); |
| | | //trace(HasChild, kitem); |
| | | if (HasChild==L"1") |
| | | treeview::SetItemChild1(tv_gs.GetId(), kitem,1); |
| | | } |
| | | } |
| | | } |
| | | return 1; |
| | | } |
| | | |
| | | int CreateRootTree(){ |
| | | xstring rootid=L"00000000-0000-0000-0000-000000000000"; |
| | | xml x=new xml; |
| | | x.setNativePointer(xml::CreateInstance()); |
| | | x.LoadXml(L"<Category HasChild='1'><CategoryID>"+rootid+L"</CategoryID></Category>"); |
| | | int hroot=treeview::InsertItem(tv_gs.GetId(),L"å
¬å¸äº§åç±»å«", 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(L"WM_XCOMMAND",OnXCommand); |
| | | //è·å¾æ çå±å¼äºä»¶ |
| | | AttachEvent(L"tv_gs", L"TVN_ITEMEXPANDING",OnTreeExpanding); |
| | | } |
| | | int onload() |
| | | { |
| | | if (GetParam()) |
| | | { |
| | | xaserverarg arg1=GetParam(); |
| | | dw_category = new xdwtable; |
| | | dw_category.setNativePointer(arg1.GetArgString(L"dw_category").toInt()); |
| | | } |
| | | tv_gs = new treeview; |
| | | tv_gs.setNativePointer(GetControl(L"tv_gs")); |
| | | CreateRootTree(); |
| | | OnAttachEvent(); |
| | | return 1; |
| | | } |
| | | ] |
| | | ] |
| | | ] |