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<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");
|
//trace(HasChild, kitem);
|
if (HasChild=="1")
|
treeview__::SetItemChild1(tv_gs.GetId(), kitem,1);
|
}
|
}
|
}
|
return 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);
|
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;
|
}
|
]
|
]
|
]
|