| | |
| | | use"lang.vl" |
| | | use "win.vl" |
| | | use "treeview.vm" |
| | | use "file.vl" |
| | | use "dev:vm[xdwtable.vm]" |
| | | #include <wobject/xstring.hpp> |
| | | #include <xcontrol/xtreeview.hpp> |
| | | #include <xcontrol/xdwgrid.hpp> |
| | | #include <wobject/xdouble.hpp> |
| | | #include <xcontrol/xlayersheet.hpp> |
| | | |
| | | #include "vbusiness/vframe/listwin.vframe.vbusiness.hpp" |
| | | #include "viewobject/view.base.hpp" |
| | | |
| | | using xml = KXMLDOMDocument; |
| | | |
| | | unit vbusiness.vpage |
| | | [ |
| | |
| | | about SKUItemcategoryselect |
| | | [ |
| | | field: |
| | | xdwtable__ dw_category; |
| | | xdwtable dw_category; |
| | | method: |
| | | [ |
| | | treeview__ tv_gs; |
| | | treeview tv_gs; |
| | | //命令发布函数 |
| | | string GetPath(int tv, int h) |
| | | xstring GetPath(int tv, int h) |
| | | { |
| | | string str = treeview__::GetItemLabel(tv, h); |
| | | int k = treeview__::GetParentItem(tv, h); |
| | | int r = treeview__::GetRootItem(tv); |
| | | xstring 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); |
| | | 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("Item",0)); |
| | | if(treeview__::GetChecked(tv_gs.GetId(),hItem) > 0) |
| | | 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); |
| | | string id = e.selectSingleNode("CategoryID").text; |
| | | string Name =GetPath(tv_gs.GetId(), hItem); |
| | | 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,"CategoryID")=="") |
| | | if(dw.GetItemString(1,L"CategoryID")==L"") |
| | | { |
| | | dw.ItemChangeTo(1,"CategoryID",id); |
| | | dw.ItemChangeTo(1,"Category",Name); |
| | | dw.ItemChangeTo(1,L"CategoryID",id); |
| | | dw.ItemChangeTo(1,L"Category",Name); |
| | | } |
| | | else |
| | | { |
| | | int n=dw.InsertRow(0); |
| | | dw.ItemChangeTo(n,"CategoryID",id); |
| | | dw.ItemChangeTo(n,"Category",Name); |
| | | dw.ItemChangeTo(n,L"CategoryID",id); |
| | | dw.ItemChangeTo(n,L"Category",Name); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | int cItem = treeview__::GetChildItem(tv_gs.GetId(), hItem); |
| | | int cItem = treeview::GetChildItem(tv_gs.GetId(), hItem); |
| | | if(cItem > 0) |
| | | { |
| | | xunhuan(pItem,cItem); |
| | | } |
| | | int nItem = treeview__::GetNextItem(tv_gs.GetId(), hItem); |
| | | int nItem = treeview::GetNextItem(tv_gs.GetId(), hItem); |
| | | if(nItem > 0) |
| | | { |
| | | xunhuan(pItem,nItem); |
| | | } |
| | | return 1; |
| | | } |
| | | int OnCmdDispatch(string comdid) |
| | | int OnCmdDispatch(xstring comdid) |
| | | { |
| | | if(comdid=="ok") |
| | | if(comdid==L"ok") |
| | | { |
| | | int hitem = treeview__::GetSelectedItem(tv_gs.GetId()); |
| | | 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); |
| | | 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(); |
| | | xunhuan(hitem, treeview::GetChildItem(tv_gs.GetId(), treeview::GetRootItem(tv_gs.GetId()))); |
| | | win::CloseWindow(); |
| | | } |
| | | return 1; |
| | | } |
| | | if(comdid=="close") |
| | | win__::CloseWindow(); |
| | | if(comdid==L"close") |
| | | win::CloseWindow(); |
| | | return 0; |
| | | } |
| | | |
| | | int OnCmdDispatch0(string comdid) |
| | | int OnCmdDispatch0(xstring 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) |
| | | xaserverarg arg; |
| | | |
| | | 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); |
| | | msxml::IXMLDOMElement e=treeview::GetItemData(tv_gs.GetId(),xitem); |
| | | |
| | | string sHasChild=e.selectSingleNode("@HasChild").text; |
| | | xstring sHasChild=e.selectSingleNode(L"@HasChild").text; |
| | | |
| | | if(treeview__::GetChildItem(tv_gs.GetId(),xitem)>0 || sHasChild=="1") |
| | | if(treeview::GetChildItem(tv_gs.GetId(),xitem)>0 || sHasChild==L"1") |
| | | { |
| | | alert("提示:请选择最后一级类别!"); |
| | | alert(L"提示:请选择最后一级类别!"); |
| | | return 0; |
| | | } |
| | | |
| | | string ID = e.selectSingleNode("CategoryID").text; |
| | | string CName = e.selectSingleNode("CName").text; |
| | | xstring ID = e.selectSingleNode(L"CategoryID").text; |
| | | xstring CName = e.selectSingleNode(L"CName").text; |
| | | trace(CName); |
| | | string ruler; |
| | | if(e.selectSingleNode("SpecRule")) |
| | | ruler = e.selectSingleNode("SpecRule").text; |
| | | xstring ruler; |
| | | if(e.selectSingleNode(L"SpecRule")) |
| | | ruler = e.selectSingleNode(L"SpecRule").text; |
| | | else |
| | | ruler =""; |
| | | arg.AddArg("CategoryID",ID); |
| | | arg.AddArg("CName",CName); |
| | | arg.AddArg("SpecRule",ruler); |
| | | ruler =L""; |
| | | arg.AddArg(L"CategoryID",ID); |
| | | arg.AddArg(L"CName",CName); |
| | | arg.AddArg(L"SpecRule",ruler); |
| | | |
| | | } |
| | | win__::CloseWindow(); |
| | | win::CloseWindow(); |
| | | return 0; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | 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); |
| | | 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(string(citem)); |
| | | //alert(xstring(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) |
| | | xml x; |
| | | |
| | | xaserverarg arg; |
| | | |
| | | 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("root/Category"); |
| | | 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); |
| | | string Name=xitem.selectSingleNode("CName").text; |
| | | string Has2D=xitem.selectSingleNode("@Has2D").text;//item.getAttribute("Has2D"); |
| | | if (Has2D=="1") |
| | | Name=Name+"*"; |
| | | int kitem=treeview__::InsertItem(tv_gs.GetId(), pitem,0,Name,xitem,15); |
| | | //int kitem=treeview__::InsertChildItem(tv_gs.GetId(), pitem,Name,xitem,15); |
| | | string HasChild=xitem.selectSingleNode("@HasChild").text;//item.getAttribute("HasChild"); |
| | | 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=="1") |
| | | treeview__::SetItemChild1(tv_gs.GetId(), kitem,1); |
| | | if (HasChild==L"1") |
| | | treeview::SetItemChild1(tv_gs.GetId(), kitem,1); |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | int CreateRootTree(){ |
| | | string rootid="00000000-0000-0000-0000-000000000000"; |
| | | xml__ x=new xml__; |
| | | x.setNativePointer(xml__::CreateInstance()); |
| | | x.LoadXml("<Category HasChild='1'><CategoryID>"+rootid+"</CategoryID></Category>"); |
| | | int hroot=treeview__::InsertItem(tv_gs.GetId(),"公司产品类别", x.GetXmlDoc().documentElement, 17); |
| | | xstring rootid=L"00000000-0000-0000-0000-000000000000"; |
| | | xml x=new xml; |
| | | |
| | | 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); |
| | | treeview::ExpandItemEx(tv_gs.GetId(),hroot); |
| | | return 1; |
| | | } |
| | | |
| | |
| | | int OnAttachEvent() |
| | | { |
| | | //绑定工具条点击事件 |
| | | AttachEvent("WM_XCOMMAND",OnXCommand); |
| | | AttachEvent(L"WM_XCOMMAND",OnXCommand); |
| | | //获得树的展开事件 |
| | | AttachEvent("tv_gs", "TVN_ITEMEXPANDING",OnTreeExpanding); |
| | | AttachEvent(L"tv_gs", L"TVN_ITEMEXPANDING",OnTreeExpanding); |
| | | } |
| | | int onload() |
| | | { |
| | | if (GetParam()) |
| | | { |
| | | xaserverarg__ arg1=GetParam(); |
| | | dw_category = new xdwtable__; |
| | | dw_category.setNativePointer(arg1.GetArgString("dw_category").toInt()); |
| | | xaserverarg arg1=GetParam(); |
| | | dw_category = new xdwtable; |
| | | dw_category.setNativePointer(arg1.GetArgString(L"dw_category").toInt()); |
| | | } |
| | | tv_gs = new treeview__; |
| | | tv_gs.setNativePointer(GetControl("tv_gs")); |
| | | tv_gs = new treeview; |
| | | tv_gs.setNativePointer(GetControl(L"tv_gs")); |
| | | CreateRootTree(); |
| | | OnAttachEvent(); |
| | | return 1; |