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("");
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"+id+"");
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;
}
]
]
]