LiFan
10 天以前 63eebabbfee1bc84850b36967ecac5116a28b73f
jrj/project/business/BasicCode/SKUItem.categoryselect.cpp
@@ -1,8 +1,13 @@
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
[
@@ -10,116 +15,116 @@
   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;
         }
         
@@ -130,42 +135,42 @@
         }
         
         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);
                  }         
               }
            }   
@@ -173,13 +178,13 @@
         }
            
         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;
         }                        
@@ -193,20 +198,20 @@
         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;