use "xcontrol.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
|
use "xbase.vframe.vbusiness.vd"//hxsoft.com -> Developer -> wlib -> vframe
|
use "saleorder.view.vd"
|
unit trade
|
[
|
class ViewAdministrativeDepartmentList : public listwin
|
{
|
xdwgrid dw_list;
|
xtreeview tv_folder;//hxsoft.com -> Developer -> wface -> vcontrol
|
string rows;
|
string urlTree;
|
string myDataUrl;
|
int changeddlb;
|
|
xnode m_agentNode; //Agent Condition
|
|
int SetAgent()
|
{
|
string xfNodeAgentArea = "agentarea";
|
xnode anode = GetAgentNode(xfNodeAgentArea);
|
if (m_agentNode)
|
{
|
SetAgentNodeContent(anode, m_agentNode);
|
}
|
else
|
{
|
msxml::IXMLDOMElement xframeElement = GetElement();
|
msxml::IXMLDOMElement agent = xframeElement.selectSingleNode("agent/" + xfNodeAgentArea + "[1]/*");
|
if (agent)
|
{
|
string s = agent.xml;
|
m_agentNode = SetAgentNodeContent(anode, s);
|
}
|
}
|
return 1;
|
}
|
|
//Õ¹¿ª·Å½øÊ÷ÀïÃæ
|
int ExpandCatChildFolder(int hItem, msxml::IXMLDOMElement ele, int image)
|
{
|
/*ÔÚ¾ßÌåÓ¦ÓÃʱ¿ÉÒÔÓÃDOMDocumentµÄLoad·½·¨À´×°ÔØXMLÎĵµ
|
ÓÃIXMLDOMNode µÄselectNodes£¨²éѯµÄ½á¹ûÓжà¸ö£¬µÃµ½´æ·ÅËÑË÷½á¹ûµÄÁ´±í£©
|
»òselectSingleNode£¨²éѯµÄ½á¹ûÓÐÒ»¸ö£¬ÔÚÓжà¸öµÄÇé¿öÏ·µ»ØÕÒµ½µÄµÚÒ»¸ö½Úµã£©·½·¨½øÐвéѯ£¬
|
ÓÃcreateNodeºÍappendChild·½·¨À´´´½¨½ÚµãºÍ×·¼Ó½Úµã£¬
|
ÓÃIXMLDOMElementµÄsetAttributeºÍgetAttribute·½·¨À´ÉèÖúͻñµÃ½ÚµãµÄÊôÐÔ¡£*/
|
msxml::IXMLDOMNodeList nlist = ele.SelectNodes("item");
|
int len = nlist.length;
|
if (len > 0)
|
tv_folder.SetItemChild(hItem, 1);
|
for (int i = 0; i < len; i++)
|
{
|
msxml::IXMLDOMElement e = nlist.item(i);
|
string name = e.getAttribute("name");
|
int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), image);//trust(e as int)½«e·ÅÈëÊ÷½á¹¹ÀïÃæµÄdataÊôÐÔÖÐ
|
ExpandCatChildFolder(h, e, 35);
|
}
|
return 1;
|
}
|
|
//Õ¹¿ªÎļþ¼ÐÃ÷ϸ
|
int ExpandFolderItem(int hItem, string parentid)
|
{
|
xml x = ViewObject::RetrieveData(urlTree, "status", "ÓÐЧ", "parentid", parentid);//»ñÈ¡ºǫ́Êý¾Ý
|
if (!x) {
|
return 0;
|
}
|
msxml::IXMLDOMNodeList nlist = x.GetXmlDoc().SelectNodes("data/Item");
|
int len = nlist.length;
|
for (int i = 0; i < len; i++)
|
{
|
msxml::IXMLDOMElement e = nlist.item(i);
|
string name = e.selectSingleNode("name").text;
|
int h = tv_folder.InsertChildItem(hItem, name, trust(e as int), 35);
|
ExpandCatChildFolder(h, e, 35);
|
}
|
return 1;
|
}
|
|
//²éÕÒµ±Ç°Ê÷ÏîµÄ¶¥¼¶Ä¿Â¼
|
int LookupTopFolder(int hItem)
|
{
|
int hRoot = tv_folder.GetRootItem();
|
while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem);
|
return hItem;
|
}
|
|
//Ê÷Õ¹¿ª
|
int OnTreeExpanding(ref TNotifyEvent evt, int p)
|
{
|
ref NMTREEVIEW nmtv = evt.pnmh;
|
int hItem = nmtv.itemNew.hItem;
|
int hTopItem = LookupTopFolder(hItem);
|
string name = tv_folder.GetItemLabel(hTopItem);
|
int child = tv_folder.GetChildItem(hItem);
|
|
msxml::IXMLDOMElement e = tv_folder.GetItemData(hItem);
|
string parentid = "";
|
if (name != "²¿ÃŽṹ")
|
parentid = e.selectSingleNode("adid").text;
|
trace(parentid);
|
if (!child) {
|
ExpandFolderItem(hItem, parentid);
|
}
|
return 1;
|
}
|
|
//²éѯ½ÚµãµÄÁбíÊý¾Ý
|
int OnPreRetrieve()
|
{
|
int hItem = tv_folder.GetSelectedItem();
|
if (hItem <= 0) return 1;
|
|
//int hCursor = xutil::SetCursorWait();
|
msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
|
string name = e.getAttribute("name");
|
xml x = 0;
|
string parentid = "";
|
if (name != "²¿ÃŽṹ")
|
parentid = e.selectSingleNode("adid").text;
|
trace(parentid);
|
x = ViewObject::RetrieveData(myDataUrl, "parentid", parentid);
|
if (x)
|
{
|
//trace(x.GetXml());
|
dw_list.Retrieve(x);
|
dw_list.Redraw();
|
}
|
else {
|
dw_list.ResetEx();
|
dw_list.Redraw();
|
}
|
dw_list.SetReadOnly(true);
|
//xutil::RestoreCursor(hCursor);
|
return 1;
|
}
|
|
int OnTreeSelChanged(ref TNotifyEvent evt, int p)
|
{
|
if (changeddlb)
|
return 1;
|
int hItem = tv_folder.GetSelectedItem();
|
if (hItem <= 0)
|
return 1;
|
int child = tv_folder.GetChildItem(hItem);
|
if (!child) {
|
int hCursor = xutil::SetCursorWait();
|
msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
|
if (!e.getAttribute("name")) {
|
string adid = e.selectSingleNode("adid").text;
|
string parentid = adid;
|
ExpandFolderItem(hItem, parentid);
|
}
|
}
|
return OnPreRetrieve();
|
}
|
|
//½¹µã¼¤»î´¦Àíº¯Êý
|
int OnSetFocus(ref TEvent evt, int param)
|
{
|
//ÖØÖù¤¾ßÌõ
|
SetAgent();
|
return 1;
|
}
|
|
int OnAdd()
|
{
|
int hItem = tv_folder.GetSelectedItem();
|
if (hItem <= 0)
|
return 1;
|
int hCursor = xutil::SetCursorWait();
|
msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
|
string parentid = "";//¸¸¼¶id
|
if (!e.getAttribute("name"))
|
parentid = e.selectSingleNode("adid").text;
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("parentid", parentid);
|
OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
|
|
return 1;
|
}
|
|
int OnUpdate()
|
{
|
/*int hItem = tv_folder.GetSelectedItem();
|
|
if(hItem <=0)
|
return 1;
|
int hCursor = xutil::SetCursorWait();
|
msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
|
|
if(e.getAttribute("name"))
|
return 1;*/
|
|
int row = dw_list.GetRow();
|
if (row < 1)
|
return 1;
|
string parentid = "", adid = "";
|
/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
|
adid = ele.selectSingleNode("adid").text;*/
|
adid = dw_list.GetItemString(row, "adid");
|
parentid = dw_list.GetItemString(row, "parentid");
|
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
/*string parentid = "", adid = "";//¸¸¼¶id
|
|
if(!e.getAttribute("name")){
|
|
parentid = e.selectSingleNode("adid").text;
|
adid = e.selectSingleNode("adid").text;
|
}*/
|
arg.AddArg("parentid", parentid);
|
arg.AddArg("adid", adid);
|
OpenWindow("dev:xpage[AdministrativeDepartmentFolder.vx]", cast(arg as int));
|
return 1;
|
}
|
|
int OnDelete()
|
{
|
/*int hItem = tv_folder.GetSelectedItem();
|
if(hItem <=0) return 1;
|
|
int hCursor = xutil::SetCursorWait();
|
msxml::IXMLDOMElement e = cast(tv_folder.GetItemData(hItem) as msxml::IXMLDOMElement);
|
string name = e.getAttribute("name");
|
string adid = "";
|
if(name != "²¿ÃŽṹ")
|
adid = e.selectSingleNode("adid").text;*/
|
|
int row = dw_list.GetRow();
|
if (row < 1)
|
return 1;
|
string adid = "";
|
/*msxml::IXMLDOMElement ele = dw_list.GetRowElement(row);
|
adid = ele.selectSingleNode("adid").text;*/
|
adid = dw_list.GetItemString(row, "adid");
|
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
arg.AddArg("adid", adid);
|
if (getUrl("/sale/data/AdministrativeDepartment/ad_delete", arg.GetString(), x) != 1)
|
{
|
string error = x.GetXmlDoc().text;
|
alert("err:" + error);
|
return 1;
|
}
|
alert(x.GetXmlDoc().text);
|
dw_list.DeleteRow(row);
|
return 1;
|
}
|
|
int OnRefresh()
|
{
|
OnPreRetrieve();
|
return 1;
|
}
|
|
//ÃüÁî·¢²¼º¯Êý
|
int OnCmdDispatch(string comdid)
|
{
|
if (comdid == "xmUpdate")
|
return OnUpdate();
|
else if (comdid == "xmAdd")
|
return OnAdd();
|
else if (comdid == "xmDelete")
|
return OnDelete();
|
else if (comdid == "xmRefresh")
|
return OnRefresh();
|
return 0;
|
}
|
|
//ÃüÁî´¦Àíʼþ
|
int OnXCommand(ref TXCommandEvent evt, int param)
|
{
|
return OnCmdDispatch(evt.pStrID);
|
}
|
|
int OnAttachEvent()
|
{
|
AttachEvent("tv_folder", "TVN_SELCHANGED", OnTreeSelChanged); //Ê÷Ñ¡Ôñ
|
AttachEvent("tv_folder", "TVN_ITEMEXPANDING", OnTreeExpanding); //Ê÷Õ¹¿ª
|
|
//AttachEvent("dw_list","DWV_ROWFOCUSCHANGED",OnRowChanged);
|
//AttachEvent("cbx_1","CBN_SELCHANGE",OnSelectDdlb);
|
//AttachEvent("cbx_datashow","CBN_SELCHANGE",OnSelectDataShowDdlb);
|
|
//°ó¶¨¹¤¾ßÌõµã»÷ʼþ
|
AttachEvent("WM_XCOMMAND", OnXCommand);
|
//»ñÈ¡½¹µãʼþ£¬ÓÃÓÚÖØÖù¤¾ßÌõ
|
AttachEvent("WM_SETFOCUS", OnSetFocus);
|
}
|
|
/*
|
//¼ÓÔØÖ÷ÌåÊý¾Ý
|
int OnRetrieve()
|
{
|
xml x = new xml;
|
x.setNativePointer(xml::CreateInstance());
|
xaserverarg arg = new xaserverarg;
|
arg.setNativePointer(arg.CreateInstance());
|
//arg.AddArg("xxx","xxx");
|
if (getUrl(myDataUrl,arg.GetString(),x)!=1)
|
{
|
trace(x.GetXmlDoc().text);
|
return -1;
|
}else
|
{
|
dw_list.Retrieve(x);
|
dw_list.Redraw();
|
}
|
return 1;
|
}
|
*/
|
|
//Õ¹¿ª×ÓÎļþ
|
int ExpandChildFolder(int hItem, msxml::IXMLDOMElement pElement)
|
{
|
msxml::IXMLDOMNodeList nlist = pElement.SelectNodes("Item");
|
int len = nlist.length;
|
for (int i = 0; i < len; i++)
|
{
|
msxml::IXMLDOMElement e = nlist.item(i);
|
string name = e.getAttribute("name");
|
string sImage = e.getAttribute("image");
|
string child = e.getAttribute("child");
|
int image = 18;
|
if (sImage) image = sImage.toInt();
|
int h = tv_folder.InsertChildItem(tv_folder.GetId(), hItem, name, trust(e as int), image);
|
if (child != "no")
|
tv_folder.SetItemChild(h, 1);
|
ExpandChildFolder(h, e);
|
}
|
return 1;
|
}
|
|
//³õʼ»¯Îļþ¼Ð
|
int InitialFolder()
|
{
|
msxml::IXMLDOMElement xframeElement = GetElement();
|
msxml::IXMLDOMElement e = xframeElement.selectSingleNode("//xtree[@name='tv_folder']/initial");
|
if (e)
|
ExpandChildFolder(0, e);
|
return 1;
|
}
|
|
int onload()
|
{
|
dw_list = GetControl("dw_list");
|
dw_list.openUrl("/sale/view/AdministrativeDepartment/template/adlist");
|
dw_list.SetColumnState("adid", false);
|
dw_list.SetColumnState("parentid", false);
|
|
myDataUrl = "/sale/data/AdministrativeDepartment/ad_list";
|
urlTree = "/sale/data/AdministrativeDepartment/ad_sidelist";
|
tv_folder = GetControl("tv_folder");
|
tv_folder.SetLineAtRoot(true);
|
InitialFolder();
|
OnAttachEvent();
|
|
return 1;
|
}
|
|
int onloaded()
|
{
|
SetAgent();
|
|
return 1;
|
}
|
};
|
]
|