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 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; } };