use "win.vl"
|
use "dev:vm[xdwgrid.vm]"
|
use "dev:vm[xdwtable.vm]"
|
use "pref.vl"
|
use "dev:vm[xml.vm]"
|
use "dev:vm[xaserverarg.vm]"
|
use "dev:vm[xaserver.vm]"
|
use "dev:vm[xutil.vm]"
|
use "frame.vl"
|
use "treeview.vm"
|
use "file.vl"
|
//unit vclient.vobject tpp
|
unit vbusiness.xpage
|
[
|
SKUItem is extend frame;
|
about SKUItem
|
[
|
field:
|
[
|
treeview__ tv_1;
|
xdwgrid__ dw_list;
|
string m_type;
|
string CategoryID;
|
xnode__ m_agentNode; //Agent Condition
|
string m_agentCond; //Agent Node
|
string m_searchtxt;
|
]
|
|
method:
|
[
|
int SetAgent()
|
{
|
string xfNodeAgentArea = "agentarea";
|
xnode__ anode = new xnode__;
|
anode.setNativePointer(GetAgentNode(xfNodeAgentArea));
|
var xframeElement = GetElement();
|
var agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"[1]/*");
|
if(agent)
|
{
|
string s = agent.xml;
|
SetAgentNodeContent (anode,s);
|
}
|
return 1;
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(ref TEvent evt,int param)
|
{
|
SetAgent();
|
|
//ÖØÖù¤¾ßÌõ
|
return 1;
|
}
|
|
int OnReTrieve()
|
{
|
string query="[SKUItem.tree.xq]";
|
xml__ x = new xml__;
|
x.setNativePointer(x.CreateInstance());
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("parentID",CategoryID);
|
arg.AddArg("query","");
|
if (xaserver__::ExecXQuery(GetServerUrl(),query,arg.GetString(),x)!=1)
|
{
|
trace(x.GetXmlDoc().text);
|
return -1;
|
}else
|
{
|
dw_list.openUrl("ÆäËûÉèÖÃ.vface/template/other/SKUItem");
|
dw_list.Retrieve(x);
|
dw_list.Redraw();
|
}
|
return 1;
|
}
|
|
int OnTreeSelChanged(ref TNotifyEvent evt,int p){
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int sitem = nmtv.itemNew.hItem;
|
|
int hCursor = xutil__::SetCursorWait();
|
dw_list.AcceptText();
|
xml__ z= new xml__;
|
z.setNativePointer(xml__::CreateInstance());
|
z.LoadXml("<root/>");
|
dw_list.Retrieve(z);
|
dw_list.Redraw();
|
dw_list.ResetUpdateStatus();
|
|
msxml::IXMLDOMElement ele=treeview__::GetItemData(tv_1.GetId(), sitem);
|
if(!ele.selectSingleNode("ID")) return 0;
|
CategoryID = ele.selectSingleNode("ID").text;
|
//trace(CategoryID);
|
m_searchtxt = "";
|
|
OnReTrieve();
|
xutil__::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int CreateSubTree(int pitem){
|
msxml::IXMLDOMElement sitemdata=treeview__::GetItemData(tv_1.GetId(), pitem);
|
string sHasChild=sitemdata.selectSingleNode("@HasChild").text;//sitemdata.getAttribute("HasChild");
|
//trace(sHasChild);
|
string pid=sitemdata.selectSingleNode("ID").text;
|
//trace(sHasChild+"sdaga"+pid);
|
if(sHasChild=="1"){//Êý¾ÝÓÐ×Ó½Úµã
|
int citem=treeview__::GetChildItem(tv_1.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);
|
arg.AddArg("query","");
|
if(xaserver__::ExecXQuery(GetServerUrl(),"[SKUItem.tree.xq]",arg.GetString(),x)!=1)
|
{
|
trace(x.GetXml());
|
return 0;
|
}
|
//trace(x.GetXml());
|
var list=x.GetXmlDoc().selectNodes("root/SKUItem");
|
int i=0,s=list.length;
|
msxml::IXMLDOMElement xitem;
|
msxml::IXMLDOMNode d;
|
for (i=0;i<s;i++){
|
xitem= list.item(s - i - 1);
|
//if(i==0)xitem.setAttribute("HasChild","1");
|
string Name=xitem.selectSingleNode("ItemName").text;
|
int kitem=treeview__::InsertItem(tv_1.GetId(), pitem,0,Name,xitem,15);
|
//int kitem=treeview__::InsertChildItem(tv_1.GetId(), pitem,Name,xitem,15);
|
string HasChild=xitem.selectSingleNode("@HasChild").text;//item.getAttribute("HasChild");
|
//trace(HasChild, kitem);
|
if (HasChild=="1")
|
treeview__::SetItemChild1(tv_1.GetId(), kitem,1);
|
}
|
}
|
}
|
return 1;
|
}
|
int CreateRootTree(){
|
string id="00000000-0000-0000-0000-000000000000";
|
xml__ x=new xml__;
|
x.setNativePointer(xml__::CreateInstance());
|
x.LoadXml("<SKUItem HasChild='1' ><ID>"+id+"</ID></SKUItem>");
|
int hroot=treeview__::InsertItem(tv_1.GetId(), "²úÆ·ÏîÄ¿·ÖÀà", x.GetXmlDoc().documentElement, 17);
|
//trace(hroot);
|
CreateSubTree(hroot);
|
treeview__::ExpandItemEx(tv_1.GetId(), hroot);
|
CategoryID = id;
|
OnReTrieve();
|
return 1;
|
}
|
int OnTreeExpanding(ref TNotifyEvent evt,int p) {
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int sitem = nmtv.itemNew.hItem;
|
CreateSubTree(sitem);
|
return 1;
|
}
|
int afterSave(){
|
int hitem = treeview__::GetSelectedItem(tv_1.GetId());
|
if(hitem == 0)
|
hitem = treeview__::GetRootItem(tv_1.GetId());
|
int rows = dw_list.GetRowCount();
|
msxml::IXMLDOMElement ele = treeview__::GetItemData(tv_1.GetId() ,hitem);
|
|
int firstChild = treeview__::GetChildItem(tv_1.GetId() ,hitem);
|
while (firstChild>0){
|
treeview__::DeleteItem(tv_1.GetId() ,firstChild);
|
firstChild = treeview__::GetChildItem(tv_1.GetId() ,hitem);
|
}
|
if(rows>0)
|
{
|
treeview__::SetItemChild1(tv_1.GetId() ,hitem,1);
|
ele.setAttribute("HasChild","1");
|
//trace(ele.xml);
|
treeview__::SetItemData(tv_1.GetId() ,hitem,ele);
|
}
|
else
|
{
|
treeview__::SetItemChild1(tv_1.GetId() ,hitem,0);
|
ele.setAttribute("HasChild","0");
|
//trace(ele.xml);
|
treeview__::SetItemData(tv_1.GetId() ,hitem,ele);
|
}
|
CreateSubTree(hitem);
|
if(treeview__::GetRootItem(tv_1.GetId()) == hitem)
|
treeview__::ExpandItemEx(tv_1.GetId() ,hitem);
|
|
dw_list.ResetUpdateStatus();
|
return 0;
|
}
|
int OnSave()
|
{
|
xml__ x=new xml__;
|
x.setNativePointer(x.CreateInstance());
|
dw_list.AcceptText();
|
dw_list.DwUpdateAllToEx(x.GetXmlDoc());
|
trace(x.GetXml());
|
xaserverarg__ arg = new xaserverarg__;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("content", x.GetXml());
|
arg.AddArg("dbmap", "SKUItem.dbmap");
|
if(xaserver__::ExecXAction(this.GetServerUrl(),"[onSave.xa]",arg.GetString(),x)!=1)
|
{
|
trace(x.GetXmlDoc().documentElement.text);
|
alert("±£´æÊ§°Ü");
|
}else{
|
alert("±£´æ³É¹¦");
|
}
|
dw_list.ResetUpdateStatus();
|
dw_list.Redraw();
|
afterSave();
|
return 1;
|
}
|
int OnSetValue( int row){
|
dw_list.SetItemString(row,"PID",CategoryID);
|
dw_list.SetItemString(row,"ID",TApp::GetGuid());
|
return 1;
|
}
|
int OnAddRow()
|
{
|
int row = dw_list.InsertRow(0);
|
int rows = dw_list.GetRowCount();
|
OnSetValue(rows);
|
dw_list.SetRow(dw_list.GetRowCount());
|
//trace(row.toString());
|
return 1;
|
}
|
|
int OnInsertRow()
|
{
|
int row=dw_list.GetRow();
|
if(row<0 || row>dw_list.GetRowCount()) return 0;
|
dw_list.InsertRow(row);
|
OnSetValue(row);
|
dw_list.SetRow(row);
|
return 1;
|
}
|
|
int OnDeleteRow()
|
{
|
int row = dw_list.GetRow();
|
if(row<0 || row>dw_list.GetRowCount()) return 0;
|
dw_list.DeleteRow(row);
|
return 1;
|
}
|
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(string comdid)
|
{
|
if (comdid =="Save") OnSave();
|
else if (comdid =="AddRow") OnAddRow();
|
else if (comdid =="InsertRow") OnInsertRow();
|
else if (comdid =="DeleteRow") OnDeleteRow();
|
return 0;
|
}
|
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(ref TXCommandEvent evt,int param)
|
{
|
return OnCmdDispatch(evt.pStrID);
|
}
|
|
int OnAttachEvent()
|
{
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent("WM_XCOMMAND",OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent("WM_SETFOCUS",OnSetFocus);
|
//»ñµÃÊ÷µÄÑ¡Ôñʼþ
|
AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged);
|
AttachEvent("tv_1", "TVN_ITEMEXPANDING",OnTreeExpanding);
|
}
|
|
int OnInitial()
|
{
|
SetAgent();
|
OnAttachEvent();
|
return 1;
|
}
|
|
int onload()
|
{
|
m_type = "all";
|
tv_1 = new treeview__;
|
tv_1.setNativePointer(this.GetControl("tv_1"));
|
dw_list = new xdwgrid__;
|
dw_list.setNativePointer(this.GetControl("dw_list"));
|
dw_list.openUrl("ÆäËûÉèÖÃ.vface/template/other/SKUItem");
|
|
OnInitial();
|
CreateRootTree();
|
|
return 1;
|
}
|
]
|
|
]
|
]
|