use "frame.vd"
|
use "publiccode.vd"
|
use "xcontrol.vd"
|
use "xtreeview.vd"
|
|
class SimpleMenuConfig : public frame
|
{
|
xdwgrid dw_list;
|
xtreeview tv_gs;
|
|
int AddRow()
|
{
|
dw_list.InsertRow(0);
|
return 1;
|
}
|
|
int InsertRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 1 || row >dw_list.GetRowCount())
|
AddRow();
|
else
|
dw_list.InsertRow(row);
|
return 1;
|
}
|
|
int DeleteRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 1 || row >dw_list.GetRowCount())
|
return 1;
|
dw_list.DeleteRow(row);
|
return 1;
|
}
|
|
int Save()
|
{
|
dw_list.AcceptText();
|
int i=0;
|
for(i=1; i<=dw_list.GetRowCount();i++)
|
{
|
string seq = dw_list.GetItemString(i, "SeqNo");
|
if(seq != i.toString())
|
dw_list.SetItemString(i, "SeqNo", i.toString());
|
}
|
|
xml x=new xml;
|
x.setNativePointer(xml::CreateInstance());
|
xaserverarg arg=new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
dw_list.DwUpdateAllToEx(x.GetXmlDoc());
|
arg.AddArg("content", x.GetXml());
|
if(getUrl("/workflow/action/ItemPictureMenu.dbmap/bill.update", arg.GetString(), x) != 1)
|
alert("±£´æÊ§°Ü!");
|
else
|
{
|
string str = x.GetXml();
|
//alert(str);
|
if(str.find("ʧ°Ü", 0) > 0)
|
alert("±£´æÊ§°Ü!");
|
else
|
{
|
//alert("±£´æ³É¹¦!");
|
dw_list.ResetUpdateStatus();
|
dw_list.DwUpdateAllToEx(x.GetXmlDoc());
|
int hItem = xtreeview::GetSelectedItem(tv_gs.GetId());
|
if(hItem > 0)
|
{
|
msxml::IXMLDOMElement e = x.GetXmlDoc().documentElement;
|
int p = trust(e as int);
|
xtreeview::SetItemData(tv_gs.GetId(), hItem, p);
|
|
while(xtreeview::GetChildItem(tv_gs.GetId(), hItem) > 0)
|
xtreeview::DeleteItem(tv_gs.GetId(), xtreeview::GetChildItem(tv_gs.GetId(), hItem));
|
|
msxml::IXMLDOMNodeList li = x.GetXmlDoc().selectNodes("item/item");
|
int s = li.length;
|
for(i=0;i<s;i++)
|
{
|
msxml::IXMLDOMElement ele = li.item(i);
|
int pa = trust(ele as int);
|
string name = ele.selectSingleNode("Name").text;
|
int cItem = xtreeview::InsertChildItem(tv_gs.GetId(), hItem, name, pa, 15);
|
if(ele.selectSingleNode("item"))
|
xtreeview::SetItemChild1(tv_gs.GetId(), cItem, 1);
|
}
|
}
|
|
}
|
}
|
return 1;
|
}
|
|
int UpRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 2 || row > dw_list.GetRowCount())
|
return 1;
|
dw_list.SetRowMove(row, -1);
|
dw_list.SetRow(row - 1);
|
dw_list.Redraw();
|
return 1;
|
}
|
|
int DownRow()
|
{
|
dw_list.AcceptText();
|
int row = dw_list.GetRow();
|
if(row < 1 || row > dw_list.GetRowCount() - 1)
|
return 1;
|
dw_list.SetRowMove(row, 1);
|
dw_list.SetRow(row + 1);
|
dw_list.Redraw();
|
return 1;
|
}
|
|
int OnCmdDispatch(string comdid)
|
{
|
int hCursor = xutil::SetCursorWait();
|
if(comdid == "AddRow") AddRow();
|
else if(comdid == "InsertRow") InsertRow();
|
else if(comdid == "DeleteRow") DeleteRow();
|
else if(comdid == "Save") Save();
|
else if(comdid == "UpRow") UpRow();
|
else if(comdid == "DownRow") DownRow();
|
xutil::RestoreCursor(hCursor);
|
return 0;
|
}
|
|
int SetAgent()
|
{
|
string xfNodeAgentArea = "agentarea";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
msxml::IXMLDOMElement xframeElement = GetElement();
|
msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/"+xfNodeAgentArea+"/*");
|
if(agent)
|
{
|
string s = agent.xml;
|
SetAgentNodeContent(anode,s);
|
}
|
return 1;
|
}
|
|
int OnSetFocus(ref TEvent evt,int p)
|
{
|
SetAgent() ;
|
return 1;
|
}
|
|
int OnXCommand(ref TXCommandEvent evt,int p)
|
{
|
return OnCmdDispatch(evt.pStrID);
|
}
|
|
int OnTreeSelChanged(ref TNotifyEvent evt,int p)
|
{
|
ref NMTREEVIEW nmtv = cast(evt.pnmh as NMTREEVIEW);
|
int hItem = nmtv.itemNew.hItem;
|
msxml::IXMLDOMElement e = trust(xtreeview::GetItemData(tv_gs.GetId(), hItem) as msxml::IXMLDOMElement);
|
//trace("%s", e.xml);
|
//string id = e.selectSingleNode("MenuID").text;
|
dw_list.AcceptText();
|
dw_list.Retrieve(e);
|
dw_list.Redraw();
|
return 1;
|
}
|
|
int OnTreeMoveNode(ref TNotifyEvent evt,int p)
|
{
|
ref TVNNMHDR nmtv = trust(evt.pnmh as ref TVNNMHDR);
|
int xfrom = nmtv.FromItem;
|
int xto = nmtv.ToItem;
|
|
int ret = xwin::MessageBox(this.GetHWND(), "È·¶¨Òƶ¯½Úµã£¡","Ìáʾ£º",1);
|
//trace(ret);
|
if(ret == 2)
|
{
|
xtreeview::DeleteItem(tv_gs.GetId(), xto);
|
return -1;
|
}
|
|
msxml::IXMLDOMElement fid = trust(xtreeview::GetItemData(tv_gs.GetId(), xfrom) as msxml::IXMLDOMElement);
|
int xpto = xtreeview::GetParentItem(tv_gs.GetId(), xto);
|
msxml::IXMLDOMElement tid = trust(xtreeview::GetItemData(tv_gs.GetId(), xpto) as msxml::IXMLDOMElement);
|
//trace("%s-------------------------%s",fid.xml,tid.xml);
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
xaserverarg arg=new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
|
string id1 = fid.selectSingleNode("@guid").text;
|
string id2 = tid.selectSingleNode("@guid").text;
|
//trace("%s-------------------------%s",id1,id2);
|
string str = "update ItemPictureMenu set parentid='"+id2+"' where menuid='"+id1+"' ";
|
str += " select 1 for xml path('root')";
|
|
arg.AddArg("sql", str);
|
if(getSql(arg.GetString(),x)!=1)
|
{
|
trace("error:"+x.GetXml());
|
alert("ÒÆ¶¯½Úµã³ö´í!");
|
xtreeview::DeleteItem(tv_gs.GetId(), xto);
|
return 0;
|
}
|
//trace("================");
|
//
|
int xpfrom = xtreeview::GetParentItem(tv_gs.GetId(), xfrom);
|
trace("%d", xpfrom);
|
msxml::IXMLDOMElement fe = trust(xtreeview::GetItemData(tv_gs.GetId(), xpfrom) as msxml::IXMLDOMElement);
|
//trace("%s-------------------------%s",fe.xml,tid.xml);
|
msxml::IXMLDOMElement fe1 = fe.selectSingleNode("item[@guid='"+id1+"']");
|
fe.removeChild(fe1);
|
tid.appendChild(fid);
|
|
xtreeview::DeleteItem(tv_gs.GetId(), xfrom);
|
return 1;
|
}
|
|
int OnInitial()
|
{
|
int rItem = xtreeview::GetRootItem(tv_gs.GetId());
|
xtreeview::ExpandItemEx(tv_gs.GetId(), rItem);
|
xtreeview::ItemFocus(tv_gs.GetId(), rItem);
|
return 1;
|
}
|
|
int OnAttachEvent()
|
{
|
AttachEvent("WM_XCOMMAND",OnXCommand);
|
AttachEvent("WM_SETFOCUS",OnSetFocus);
|
AttachEvent("tv_gs","TVN_SELCHANGED",OnTreeSelChanged);
|
AttachEvent("tv_gs", "TVN_ENDDRAG",OnTreeMoveNode);
|
return 1;
|
}
|
|
int onload()
|
{
|
dw_list = GetControl("dw_list");
|
dw_list.openUrl("/sale/view/SimpleProduct/template/Simple/Menu");
|
dw_list.SetColumnState("SeqNo", false);
|
|
tv_gs = GetControl("tv_gs");
|
|
SetAgent();
|
OnAttachEvent();
|
|
OnInitial();
|
|
return 1;
|
}
|
};
|