|  |  | 
 |  |  | #include <wobject/xstring.hpp> | 
 |  |  | #include <wobject/xdouble.hpp> | 
 |  |  | #include <xcontrol/xtreeview.hpp> | 
 |  |  | #include <xcontrol/xdwgrid.hpp> | 
 |  |  | #include <xcontrol/ximageview.hpp> | 
 |  |  |  | 
 |  |  | #include "vbusiness/vframe/maint.vframe.vbusiness.hpp" | 
 |  |  | #include "viewobject/view.base.hpp" | 
 |  |  | #include "viewobject/saleorder.view.hpp" | 
 |  |  | #include "viewobject/quote.view.hpp" | 
 |  |  | #include "viewobject/shoppingcart.view.hpp" | 
 |  |  | #include "viewobject/productLibrary.view.hpp" | 
 |  |  | #include "xcontrol/xcheckbox.hpp" | 
 |  |  | #include "xcontrol/xshtml.hpp" | 
 |  |  |  | 
 |  |  | class __declspec(dllexport) ProductLibrary4Win : public xframe | 
 |  |  | { | 
 |  |  | public: | 
 |  |  |    //产品库产品列表 | 
 |  |  |    xdwgrid   dw_list; | 
 |  |  |    //购物车产品列表 | 
 |  |  |    xdwgrid   dwc_list; | 
 |  |  |  | 
 |  |  |    //产品缓存对象 | 
 |  |  |    //xdataset g_xdoc_product; | 
 |  |  |    //xdataset g_xdoc_shoppingcart; | 
 |  |  |  | 
 |  |  |    xcombobox  cbx_goodscar; | 
 |  |  |    //是否多选 | 
 |  |  |  | 
 |  |  |    xnode   m_agentNode;   //Agent Condition | 
 |  |  |    xtreeview tv_folder; | 
 |  |  |    xstring    agentFor; | 
 |  |  |    KXMLDOMElement imageElement; | 
 |  |  |    xstring m_customer; | 
 |  |  |  | 
 |  |  | public: | 
 |  |  |    ProductLibrary4Win(void* implPtr, HWND hWnd) :xframe(implPtr, hWnd) {} | 
 |  |  | public: | 
 |  |  |    static ProductLibrary4Win* CreateInstance(void* implPtr, void* hWnd) | 
 |  |  |    { | 
 |  |  |       ProductLibrary4Win* pWin = new ProductLibrary4Win(implPtr, (HWND)hWnd); | 
 |  |  |       return pWin; | 
 |  |  |    } | 
 |  |  | public: | 
 |  |  |    int FillGoodsCarList() | 
 |  |  |    { | 
 |  |  |       xcombobox xc = GetControl(L"frame:cbx_goodscar"); | 
 |  |  |       if (!xc) return 0; | 
 |  |  |       xml  x = ShoppingCartView::GetRoleList(); | 
 |  |  |       if (!x) return 0; | 
 |  |  |       xc.SetText(L"==选择购物车==L"); | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList nlist = x.selectNodes(L"//item"); | 
 |  |  |       int len = nlist.length(); | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = nlist.item(i); | 
 |  |  |          xstring name = e.getAttribute(L"name"); | 
 |  |  |          xc.AddItem( name); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int SetAgent() | 
 |  |  |    { | 
 |  |  |       xstring xfNodeAgentArea = L"agentarea"; | 
 |  |  |       xnode anode = GetAgentNode(xfNodeAgentArea); | 
 |  |  |       if (m_agentNode) | 
 |  |  |       { | 
 |  |  |          SetAgentNode(anode, m_agentNode); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement xframeElement = GetElement(); | 
 |  |  |          KXMLDOMElement agent = xframeElement.selectSingleNode(L"agent/" + xfNodeAgentArea + L"[@for='" + agentFor + L"']/*"); | 
 |  |  |          if (agent) | 
 |  |  |          { | 
 |  |  |             bstring s = agent.xml(); | 
 |  |  |             m_agentNode = SetAgentNode(anode, s); | 
 |  |  |             //FillGoodsCarList(); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //焦点激活处理函数 | 
 |  |  |    int OnSetFocus(TEvent * evt, int param) | 
 |  |  |    { | 
 |  |  |       //重置工具条 | 
 |  |  |       SetAgent(); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    KXMLDOMElement OnGetCarListRowElement(int row = 0) | 
 |  |  |    { | 
 |  |  |       if (row < 1) row = dwc_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dwc_list.GetRowCount()) return KXMLDOMElement(); | 
 |  |  |       KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |       return e; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnShowImage(xstring skuid) | 
 |  |  |    { | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       //im.RemoveImage(); | 
 |  |  |       im.Reset(); | 
 |  |  |  | 
 |  |  |       xml xp ; | 
 |  |  |       xaserverarg arg_pic; | 
 |  |  |       arg_pic.AddArg(L"SKUID", skuid); | 
 |  |  |       if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU", arg_pic.GetString(), xp) != 1) | 
 |  |  |       { | 
 |  |  |          trace(xstring(L"xxx")+xp.xml()); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          //trace(skuid+L" "+xp.GetXml()); | 
 |  |  |          imageElement = xp.documentElement(); | 
 |  |  |          KXMLDOMNodeList  nlistp = xp.selectNodes(L"ImageList/image"); | 
 |  |  |          int lenp = nlistp.length(); | 
 |  |  |          for (int ip = 0; ip < lenp; ip++) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xitem = nlistp.item(ip); | 
 |  |  |             xstring picname = xitem.selectSingleNode(L"PicPath").text(); | 
 |  |  |             xstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); | 
 |  |  |             if (picname == L"/business/products/Thumbs//") | 
 |  |  |                picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; | 
 |  |  |             im.AddImages(picname, (LPTSTR)L""); | 
 |  |  |          } | 
 |  |  |          im.Redraw(); | 
 |  |  |          //win32::SendMessage(im.GetId(),0x000f,0,1); | 
 |  |  |          //win32::InvalidateRect(im.GetId(),cast(0 as ref xrect),true); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnShowImage(xstring skuid, xstring customerItemNo) | 
 |  |  |    { | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       //im.RemoveImage(); | 
 |  |  |       im.Reset(); | 
 |  |  |  | 
 |  |  |       xml xp ; | 
 |  |  |       xaserverarg arg_pic ; | 
 |  |  |       arg_pic.AddArg(L"SKUID", skuid); | 
 |  |  |       arg_pic.AddArg(L"CustomerID", m_customer); | 
 |  |  |       arg_pic.AddArg(L"CustomerItemNo", customerItemNo); | 
 |  |  |  | 
 |  |  |       if (xurl::get(L"/sale/data/ProductLibrary3/pref/picture/customer/imagelistSKU", arg_pic.GetString(), xp) != 1) | 
 |  |  |       { | 
 |  |  |          trace(L"error:" + xstring(xp.xml(),true)); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          imageElement = xp.documentElement(); | 
 |  |  |          KXMLDOMNodeList  nlistp = xp.selectNodes(L"ImageList/image"); | 
 |  |  |          int lenp = nlistp.length(); | 
 |  |  |          for (int ip = 0; ip < lenp; ip++) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xitem = nlistp.item(ip); | 
 |  |  |             bstring picname = xitem.selectSingleNode(L"PicPath").text(); | 
 |  |  |             bstring goodno = xitem.selectSingleNode(L"GoodsNo").text(); | 
 |  |  |             if (picname == L"/business/products/Thumbs//") | 
 |  |  |                picname = L"/business/products/Thumbs/00/00000000-0000-0000-0000-000000000000.jpg"; | 
 |  |  |             im.AddImages(picname, L""); | 
 |  |  |          } | 
 |  |  |          im.Redraw(); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnRowChanged(TEvent * evt, int p) | 
 |  |  |    { | 
 |  |  |       DWNMHDR&  hdr = *(DWNMHDR*)evt->notify.pnmh; | 
 |  |  |       int row = hdr.row; | 
 |  |  |  | 
 |  |  |       xshtml xs = GetControl(L"html_detail"); | 
 |  |  |       xstring html = makeHtml(row); | 
 |  |  |       xs.SetContent(html); | 
 |  |  |       xs.Redraw(); | 
 |  |  |  | 
 |  |  |       xstring id = dw_list.GetGuid(row); | 
 |  |  |       OnShowImage(id); | 
 |  |  |       trace(id); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnGoodsCarRowChanged(TEvent * evt, int p) | 
 |  |  |    { | 
 |  |  |       DWNMHDR&  hdr = *(DWNMHDR*)evt->notify.pnmh; | 
 |  |  |       int row = hdr.row; | 
 |  |  |  | 
 |  |  |       xshtml xs = GetControl(L"html_detail"); | 
 |  |  |       xstring html = makeGoodscarHtml(row); | 
 |  |  |       xs.SetContent(html); | 
 |  |  |       xs.Redraw(); | 
 |  |  |       if (m_customer) | 
 |  |  |       { | 
 |  |  |          xstring id = dw_list.GetItemString(row, L"SKUID"); | 
 |  |  |          xstring customerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); | 
 |  |  |          OnShowImage(id, customerItemNo); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int DeleteRow(int row) | 
 |  |  |    { | 
 |  |  |       int IDOK = 1; | 
 |  |  |       int MB_OKCANCEL = 1; | 
 |  |  |       int MB_ICONQUESTION = 32; | 
 |  |  |       if (MessageBoxW(GetHWND(), L"确认删除指定的项,删除后将不能恢复?", L"提示", MB_OKCANCEL | MB_ICONQUESTION) != IDOK) return 1; | 
 |  |  |       xstring id = dw_list.GetGuid(row); | 
 |  |  |  | 
 |  |  |       if (ProductLibraryView::DeleteItem(id) == 1)   dw_list.DeleteRow(0); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int SetSelectState(xdwgrid dw_obj, int state) | 
 |  |  |    { | 
 |  |  |       if (state == 1) | 
 |  |  |       { | 
 |  |  |          dw_obj.SetSelectionMode(3); | 
 |  |  |       } | 
 |  |  |       else if (state == -1) | 
 |  |  |       { | 
 |  |  |          dw_obj.SelectRow(0, false); | 
 |  |  |          dw_obj.SetSelectionMode(0); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int OnCkbCLick(TEvent * evt, int p) | 
 |  |  |    { | 
 |  |  |       xcheckbox cbx_1 = GetControl(L"frame:cbx1"); | 
 |  |  |       int state = cbx_1.GetCheck(); | 
 |  |  |       return SetSelectState(dw_list, state); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnCkbCLick2(TEvent * evt, int p) | 
 |  |  |    { | 
 |  |  |       xcheckbox cbx_2 = GetControl(L"frame:cbx2"); | 
 |  |  |       int state = cbx_2.GetCheck(); | 
 |  |  |       return SetSelectState(dwc_list, state); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xml  GetGoodsPropList(xstring guid) | 
 |  |  |    { | 
 |  |  |       xml x; | 
 |  |  |       xaserverarg arg; | 
 |  |  |       arg.AddArg(L"guid", guid); | 
 |  |  |       if (xurl::get(L"/sale/data/SO/goods/goodsprop/list", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          bstring error = x.text(); | 
 |  |  |          alert(error); | 
 |  |  |       } | 
 |  |  |       return x; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xml  GetGoodsPropListEx(xstring guid) | 
 |  |  |    { | 
 |  |  |       xml x; | 
 |  |  |       xstring fields = L"<data>"; | 
 |  |  |       //fields +=L"<field name='HighestPrice' label='最高价'/>"; | 
 |  |  |       //fields +=L"<field name='LowestPrice' label='最低价'/>"; | 
 |  |  |  | 
 |  |  |       //fields +=L"<field name='BulkPrice' label='散货价'/>"; | 
 |  |  |       //fields +=L"<field name='CardPrice' label='纸卡价'/>"; | 
 |  |  |       //fields +=L"<field name='BuyPrice' label='采购价'/>"; | 
 |  |  |       //fields +=L"<field name='SupplierID' label='货源'/>"; | 
 |  |  |  | 
 |  |  |       fields += L"<field name='Packing' label='包装方式'/>"; | 
 |  |  |       fields += L"<field name='PackingRate' label='每箱数量'/>"; | 
 |  |  |       fields += L"<field name='VolumeDesc' label='包装尺码'/>"; | 
 |  |  |       fields += L"<field name='GWPerPkg' label='毛重'/>"; | 
 |  |  |       fields += L"<field name='NWPerPkg' label='净重'/>"; | 
 |  |  |       //fields +=L"<field name='DeveloperID' label='开发人员'/>"; | 
 |  |  |       fields += L"<field name='AttributeValue_1' label='产品属性'/>"; | 
 |  |  |       //fields +=L"<field name='Remark' label='备注'/>"; | 
 |  |  |  | 
 |  |  |       fields += L"</data>"; | 
 |  |  |       x.loadXML(fields); | 
 |  |  |  | 
 |  |  |       return x; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xstring makeHtml(int row) | 
 |  |  |    { | 
 |  |  |       xstring id = dw_list.GetItemString(row, L"@guid"); | 
 |  |  |       xml x = GetGoodsPropList(id); | 
 |  |  |       xml x1 = GetGoodsPropListEx(id); | 
 |  |  |  | 
 |  |  |       xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'>"; | 
 |  |  |       html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"SKUNo") + | 
 |  |  |          L"</span> <span style='font-weight:700;width:50;font-size:10pt' >类项:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"RefNo") + | 
 |  |  |          L"</span></div>"; | 
 |  |  |       html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >公司型号:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"GoodsNo") + | 
 |  |  |          L"</span></div>"; | 
 |  |  |       html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CName") + | 
 |  |  |          L"</span></div>"; | 
 |  |  |       if (dw_list.GetItemString(row, L"CSpec") != L"") | 
 |  |  |          html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dw_list.GetItemString(row, L"CSpec") + | 
 |  |  |             L"</span></div>"; | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList fieldsEx = x1.selectNodes(L"data/field"); | 
 |  |  |       xstring ls_detail = L""; | 
 |  |  |       xstring ls_item = L""; | 
 |  |  |       xstring name; | 
 |  |  |       xstring label; | 
 |  |  |       int len = fieldsEx.length(); | 
 |  |  |       int i = 0; | 
 |  |  |  | 
 |  |  |       for (i = 0; i < len; true) | 
 |  |  |       { | 
 |  |  |          int cnt = 0; | 
 |  |  |          ls_item = L""; | 
 |  |  |          while (cnt < 2) | 
 |  |  |          { | 
 |  |  |             name = fieldsEx.item(i).selectSingleNode(L"@name").text(); | 
 |  |  |             label = fieldsEx.item(i).selectSingleNode(L"@label").text(); | 
 |  |  |             ls_item += L"<td>" + label + L"</td>" + L"<td style='text-align:center'>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; | 
 |  |  |             cnt++; | 
 |  |  |             i++; | 
 |  |  |             if (i == len)break; | 
 |  |  |          } | 
 |  |  |          ls_detail += L"<tr>" + ls_item + L"</tr>"; | 
 |  |  |       } | 
 |  |  |       html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + | 
 |  |  |          + L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" | 
 |  |  |          + ls_detail | 
 |  |  |          + L"</table>" | 
 |  |  |          + L"</div>"; | 
 |  |  |  | 
 |  |  |       xstring ls_star = L""; | 
 |  |  |       KXMLDOMNodeList fields = x.selectNodes(L"data/field"); | 
 |  |  |       len = fields.length(); | 
 |  |  |  | 
 |  |  |       ls_detail = L""; | 
 |  |  |       if (len > 0) | 
 |  |  |          html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >技术要求:</span></div>"; | 
 |  |  |       for (i = 0; i < len; true) | 
 |  |  |       { | 
 |  |  |          ls_item = L""; | 
 |  |  |  | 
 |  |  |          int count = 0; | 
 |  |  |          while (count < 2) | 
 |  |  |          { | 
 |  |  |             name = fields.item(i).selectSingleNode(L"@name").text(); | 
 |  |  |             label = fields.item(i).selectSingleNode(L"@label").text(); | 
 |  |  |             if (name == L"QualityTerm" || name == L"PackTerm" || label == L"质量" || label == L"包装质量" || label == L"技术要求") | 
 |  |  |             { | 
 |  |  |                i++; | 
 |  |  |                if (i >= len)count = 2; | 
 |  |  |                continue; | 
 |  |  |             } | 
 |  |  |             else if (dw_list.GetItemString( row, (LPCTSTR)name) == L"") | 
 |  |  |             { | 
 |  |  |                KXMLDOMNodeList options = fields.item(i).selectNodes(L"item"); | 
 |  |  |                int tlen = options.length(); | 
 |  |  |                xstring terms = L""; | 
 |  |  |                for (int k = 0; k < tlen; k++) | 
 |  |  |                { | 
 |  |  |                   if (xstring(options.item(k).text())) | 
 |  |  |                   { | 
 |  |  |                      if (k > 0) terms += L", L"; | 
 |  |  |                      terms += (xstring)L"[" + options.item(k).text() + L"]"; | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |                ls_star += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >" + label + L"*:</span><span  style='width:90;font-size:10pt'>" + terms + L"</span></div>"; | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                ls_item = L"<td>" + label + L"</td>" + L"<td>" + dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; | 
 |  |  |                count++; | 
 |  |  |             } | 
 |  |  |             i++; | 
 |  |  |             if (i >= len)count = 2; | 
 |  |  |          } | 
 |  |  |          ls_item = L"<tr>" + ls_item + L"</tr>"; | 
 |  |  |          ls_detail += ls_item; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       html += (xstring)L"<div style='margin-left:8px;margin-right:16px;'>" + | 
 |  |  |          +L"<table><colgroup span='1' width='70'/><colgroup span='1' width='120'/><colgroup span='1' width='70'/><colgroup span='1' width='120'/>" | 
 |  |  |          + ls_detail | 
 |  |  |          + L"</table>" | 
 |  |  |          + L"</div>"; | 
 |  |  |       if (dw_list.GetItemString(row, L"QualityTerm") != L"") | 
 |  |  |       { | 
 |  |  |          html += L"<div style='height:12px'/>"; | 
 |  |  |          html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >质量:</span></div>"; | 
 |  |  |          html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt'  >" + dw_list.GetItemString(row, L"QualityTerm") + L"</span></div>"; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       if (dw_list.GetItemString(row, L"PackTerm") != L"") | 
 |  |  |       { | 
 |  |  |          html += L"<div style='height:12px'/>"; | 
 |  |  |          html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >包装质量:</span></div>"; | 
 |  |  |          html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString(row, L"PackTerm") + L"</span></div>"; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       if (dw_list.GetItemString( row, L"Remark") != L"") | 
 |  |  |       { | 
 |  |  |          //html +=  L"<div style='height:12px'/>"; | 
 |  |  |          html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >备注:</span></div>"; | 
 |  |  |          html += L"<div ><span style='margin-left:8px;margin-right:16px;font-weight:400;font-size:10pt' >" + dw_list.GetItemString( row, L"Remark") + L"</span></div>"; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       html += L"<div style='height:24px'/>"; | 
 |  |  |  | 
 |  |  |       //星标项 | 
 |  |  |       html += ls_star; | 
 |  |  |  | 
 |  |  |       //显示图片	 | 
 |  |  |       /* | 
 |  |  |       if (id != L"") | 
 |  |  |       { | 
 |  |  |          xml xp=new xml; | 
 |  |  |          xp.setNativePointer(xml::CreateInstance()); | 
 |  |  |          xaserverarg arg_pic=new xaserverarg; | 
 |  |  |          arg_pic.setNativePointer(arg_pic.CreateInstance()); | 
 |  |  |          arg_pic.AddArg(L"SKUID",id); | 
 |  |  |          if(url::get(L"/sale/data/ProductLibrary3/pref/picture/imagelistSKU",arg_pic.GetString(),xp)!=1) | 
 |  |  |          { | 
 |  |  |             trace(L"xxx",xp.GetXml()); | 
 |  |  |          }else { | 
 |  |  |             html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >ͼƬ:</span>"   ; | 
 |  |  |             KXMLDOMElement ep=  xp.selectSingleNode(L"ImageList"); | 
 |  |  |             if (ep) | 
 |  |  |             { | 
 |  |  |                if (ep.SelectNodes(L"image")){ | 
 |  |  |                   KXMLDOMNodeList  nlistp = ep.SelectNodes(L"image"); | 
 |  |  |                   int ip=0; | 
 |  |  |                   int lenp = nlistp.length; | 
 |  |  |                   for(ip=0;ip<lenp;ip++) | 
 |  |  |                   { | 
 |  |  |                      KXMLDOMElement xitemp = nlistp.item(ip); | 
 |  |  |                      xstring filename = xitemp.selectSingleNode(L"PicPath").text; | 
 |  |  |                      //trace(filename); | 
 |  |  |                      html +=  L"<control visible='layer' controlclass='ximage'  data='' src='http://192.168.7.241:7001" +  filename +L"'/>"; | 
 |  |  |                   } | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             html +=  L"</div>"; | 
 |  |  |          } | 
 |  |  |       }else { | 
 |  |  |          xstring picname = L"1FA9E331-F95C-4E51-B80C-73FB9B911D8D.jpg";//dw_list.GetItemString(row,L"ImgName"); //ItemID+L".jpg"; | 
 |  |  |          xstring str = picname.mid(0,2); | 
 |  |  |          str = str.upper(); | 
 |  |  |          xstring serversrc =L"http://192.168.7.241:1001/business/products/chanpin/"+str+L"/"+picname; | 
 |  |  |          html +=  L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >ͼƬ:</span>"; | 
 |  |  |          html +=  L"<control visible='layer' controlclass='ximage'  data='' src='"+ serversrc +L"'/></div>"; | 
 |  |  |       } | 
 |  |  |       */ | 
 |  |  |       html += L"</body></html>"; | 
 |  |  |       //trace(html); | 
 |  |  |       return html; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xstring makeGoodscarHtml(int row) | 
 |  |  |    { | 
 |  |  |       xstring No = dwc_list.GetItemString(row, L"RefNo");//获取属性值id					 | 
 |  |  |       xml x = GetGoodsPropList(No); | 
 |  |  |  | 
 |  |  |       xstring html = L"<html><style> .text{ font-weight:400} .label { font-weight:400;}</style><body style='margin:2;background-color1:#ccdccc none #f0f0f0 none'>"; | 
 |  |  |       html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >编号:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"No") + | 
 |  |  |          L"</span></div>"; | 
 |  |  |       html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >品名:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CName") + | 
 |  |  |          L"</span></div>"; | 
 |  |  |       html += L"<div ><span style='font-weight:700;width:50;font-size:10pt'  >规格:</span><span  style='width:90;font-size:10pt'>" + dwc_list.GetItemString(row, L"CSpec") + | 
 |  |  |          L"</span></div>"; | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList fields = x.selectNodes(L"data/field"); | 
 |  |  |       int len = fields.length(); | 
 |  |  |       html += (xstring)L"<table>" + | 
 |  |  |          L"<colgroup span='1' width='80'/>" + | 
 |  |  |          L"<colgroup span='1' width='120'/>" + | 
 |  |  |          L"<colgroup span='1' width='420'/>"; | 
 |  |  |       html += L"<tr>"; | 
 |  |  |       html += L"<td style='text-align:center'>编号</td><td style='text-align:center'>项目</td><td style='text-align:center'>内容</td>"; | 
 |  |  |       html += L"</tr>"; | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          xstring name = fields.item(i).selectSingleNode(L"@name").text(); | 
 |  |  |          xstring label = fields.item(i).selectSingleNode(L"@label").text(); | 
 |  |  |          html += L"<tr>"; | 
 |  |  |          if (i == 0) | 
 |  |  |             html += L"<td rowspan='" + xstring(len) + L"'>" + No + L"</td><td >" + label + L"</td><td >" + L"</td>"; | 
 |  |  |          else | 
 |  |  |             html += L"<td >" + label + L"</td><td >" +dw_list.GetItemString( row, (LPCTSTR)name) + L"</td>"; | 
 |  |  |          html += L"</tr>"; | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       html += L"<tr>"; | 
 |  |  |       html += L"<td rowspan='3'>" +dw_list.GetItemString( row, L"PackCode") + L"</td><td >包装方式</td><td >" + | 
 |  |  |          dw_list.GetItemString(row, L"CPack") + L"</td>"; | 
 |  |  |       html += L"</tr>"; | 
 |  |  |       html += L"<tr height='48'>"; | 
 |  |  |       html += L"<td >包装要求</td><td >" +dw_list.GetItemString( row, L"PackQualityTerm") + L"</td>"; | 
 |  |  |       html += L"</tr>"; | 
 |  |  |       html += L"<tr>"; | 
 |  |  |       html += L"<td >侧唛</td><td ></td>"; | 
 |  |  |       html += L"</tr>"; | 
 |  |  |  | 
 |  |  |       html += L"<tr height='72'>"; | 
 |  |  |       html += L"<td>" +dw_list.GetItemString( row, L"QualityCode") + L"</td><td >质量要求</td><td >" + | 
 |  |  |          dw_list.GetItemString(row, L"QualityTerm") + L"</td>"; | 
 |  |  |       html += L"</tr>"; | 
 |  |  |  | 
 |  |  |       html += L"</table>"; | 
 |  |  |  | 
 |  |  |       html += L"</body></html>"; | 
 |  |  |       return html; | 
 |  |  |  | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int CarGoodsDelete() | 
 |  |  |    { | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xstring Up(xstring name) { | 
 |  |  |       xstring str = name.mid(0, 2); | 
 |  |  |       str = str.toUpper(); | 
 |  |  |       return xaserver::UploadFile(L"product" + str, name + L".jpg", GetHWND(), L"", false); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAddImage() { | 
 |  |  |       if (m_customer != L"") return OnAddImageEx(); | 
 |  |  |       int row = dw_list.GetNextSelectRow(1); | 
 |  |  |       if (row < 1) row = dw_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dw_list.GetRowCount()) return 0; | 
 |  |  |  | 
 |  |  |       KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |       xstring skuid = dw_list.GetItemString( row, L"@guid"); | 
 |  |  |       xstring SKUNo = dw_list.GetItemString( row, L"SKUNo"); | 
 |  |  |       xstring id = ViewObject::GetGuid(); | 
 |  |  |       xstring ret1 = Up(id); | 
 |  |  |       if (ret1 == L"-1") return -1; | 
 |  |  |       if (ret1 == L"0") | 
 |  |  |       { | 
 |  |  |          alert(L"上传图片失败"); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       xstring originfile = ret1; | 
 |  |  |       xstring ext = originfile.right(7); | 
 |  |  |       if (ext.find(L".") >= 0) | 
 |  |  |          ext = ext.mid(ext.find(L".") + 1, 9999); | 
 |  |  |       else | 
 |  |  |          ext = L"jpg"; | 
 |  |  |  | 
 |  |  |       // 图片名加入数据库 | 
 |  |  |       xml x ; | 
 |  |  |       x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + | 
 |  |  |          L"<ProductPictureID>" + id + L"</ProductPictureID>" + | 
 |  |  |          L"<OriginFile>" + originfile + L"</OriginFile>" + | 
 |  |  |          L"<FileExt>" + ext + L"</FileExt>" + | 
 |  |  |          L"<SKUID>" + skuid + L"</SKUID>" + | 
 |  |  |          L"<Name>[" + SKUNo.trim() + L"]</Name>" + | 
 |  |  |          L"<FileName>" + id + L".jpg</FileName>" + | 
 |  |  |          L"</Item>" | 
 |  |  |       ); | 
 |  |  |  | 
 |  |  |       xaserverarg arg; | 
 |  |  |       arg.AddArg(L"content", x.xml()); | 
 |  |  |       if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          alert(x.text()); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       dw_list.SetItemString(row, L"pic", L"*"); | 
 |  |  |       dw_list.Redraw(); | 
 |  |  |       //刷新一下界面,显示图片 | 
 |  |  |       OnShowImage(skuid); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAddImageEx() { | 
 |  |  |       int row = dwc_list.GetNextSelectRow(1); | 
 |  |  |       if (row < 1) row = dwc_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dwc_list.GetRowCount()) return 0; | 
 |  |  |  | 
 |  |  |       KXMLDOMElement e = dw_list.GetRowElement( row); | 
 |  |  |       xstring skuid =dw_list.GetItemString( row, L"SKUID"); | 
 |  |  |       xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); | 
 |  |  |       xstring CustomerID = m_customer; | 
 |  |  |       xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); | 
 |  |  |       xstring id = ViewObject::GetGuid(); | 
 |  |  |       xstring ret1 = Up(id); | 
 |  |  |       if (ret1 == L"-1") return -1; | 
 |  |  |       if (ret1 == L"0") | 
 |  |  |       { | 
 |  |  |          alert(L"上传图片失败"); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       xstring originfile = ret1; | 
 |  |  |       xstring ext = originfile.right(7); | 
 |  |  |       if (ext.find(L".") >= 0) | 
 |  |  |          ext = ext.mid(ext.find(L".") + 1, 9999); | 
 |  |  |       else | 
 |  |  |          ext = L"jpg"; | 
 |  |  |  | 
 |  |  |       // 图片名加入数据库 | 
 |  |  |       xml x; | 
 |  |  |       x.loadXML(L"<Item update.new='1' update.modify='1' guid='" + id + L"'>" + | 
 |  |  |          L"<ProductPictureID>" + id + L"</ProductPictureID>" + | 
 |  |  |          L"<OriginFile>" + originfile + L"</OriginFile>" + | 
 |  |  |          L"<FileExt>" + ext + L"</FileExt>" + | 
 |  |  |          L"<SKUID>" + skuid + L"</SKUID>" + | 
 |  |  |          L"<CustomerItemNo>" + CustomerItemNo + L"</CustomerItemNo>" + | 
 |  |  |          L"<CustomerID>" + CustomerID + L"</CustomerID>" + | 
 |  |  |          L"<Name>[" + SKUNo.trim() + L"]</Name>" + | 
 |  |  |          L"<FileName>" + id + L".jpg</FileName>" + | 
 |  |  |          L"</Item>" | 
 |  |  |       ); | 
 |  |  |  | 
 |  |  |       xaserverarg arg; | 
 |  |  |       arg.AddArg(L"content", x.xml()); | 
 |  |  |       if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          alert(x.text()); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       dwc_list.SetItemString(row, L"pic", L"*"); | 
 |  |  |       dwc_list.Redraw(); | 
 |  |  |       //刷新一下界面,显示图片 | 
 |  |  |       OnShowImage(skuid, CustomerItemNo); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnDeleteImageEx() | 
 |  |  |    { | 
 |  |  |       int row = dwc_list.GetNextSelectRow(1); | 
 |  |  |       if (row < 1) row = dwc_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dwc_list.GetRowCount()) return 0; | 
 |  |  |  | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       int index = im.GetSelectIndex(); | 
 |  |  |       int count = im.GetImageCount(); | 
 |  |  |  | 
 |  |  |       if (count < 1) return 1; | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList images = imageElement.selectNodes(L"image"); | 
 |  |  |       int length = images.length(); | 
 |  |  |       if (length < index) return 1; | 
 |  |  |  | 
 |  |  |       int MB_OKCANCEL = 0x00000001; | 
 |  |  |       int IDOK = 1; | 
 |  |  |       if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; | 
 |  |  |  | 
 |  |  |       xstring id = images.item(index).selectSingleNode(L"@guid").text(); | 
 |  |  |  | 
 |  |  |       xml x ; | 
 |  |  |       xaserverarg arg; | 
 |  |  | 		 | 
 |  |  |       xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; | 
 |  |  |       arg.AddArg(L"content", str); | 
 |  |  |       if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          alert(x.text()); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       if (count == 1) | 
 |  |  |       { | 
 |  |  |          dwc_list.SetItemString(row, L"pic", L""); | 
 |  |  |          dwc_list.Redraw(); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       xstring skuid =dw_list.GetItemString( row, L"SKUID"); | 
 |  |  |       xstring SKUNo =dw_list.GetItemString( row, L"SKUID/@__displaystring"); | 
 |  |  |       xstring CustomerID = m_customer; | 
 |  |  |       xstring CustomerItemNo =dw_list.GetItemString( row, L"CustomerItemNo"); | 
 |  |  |       OnShowImage(skuid, CustomerItemNo); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnDeleteImage() { | 
 |  |  |       if (m_customer != L"") return OnDeleteImageEx(); | 
 |  |  |  | 
 |  |  |       int row = dw_list.GetNextSelectRow(1); | 
 |  |  |       if (row < 1) row = dw_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dw_list.GetRowCount()) return 0; | 
 |  |  |  | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       int index = im.GetSelectIndex(); | 
 |  |  |       int count = im.GetImageCount(); | 
 |  |  |  | 
 |  |  |       if (count < 1) return 1; | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList images = imageElement.selectNodes(L"image"); | 
 |  |  |       int length = images.length(); | 
 |  |  |       if (length < index) return 1; | 
 |  |  |  | 
 |  |  |       int MB_OKCANCEL = 0x00000001; | 
 |  |  |       int IDOK = 1; | 
 |  |  |       if (MessageBox(GetHWND(), L"确认删除当前图片?", L"提示", MB_OKCANCEL) != IDOK) return 1; | 
 |  |  |  | 
 |  |  |       xstring id = images.item(index).selectSingleNode(L"@guid").text(); | 
 |  |  |  | 
 |  |  |       xml x; | 
 |  |  |       xaserverarg arg; | 
 |  |  |       xstring str = L"<Item update.modify='1' update.delete='1' guid='" + id + L"'/>"; | 
 |  |  |       arg.AddArg(L"content", str); | 
 |  |  |       if (xurl::get(L"/sale/data/ProductLibrary/image/update", arg.GetString(), x) != 1) | 
 |  |  |       { | 
 |  |  |          alert(x.text()); | 
 |  |  |          return -1; | 
 |  |  |       } | 
 |  |  |       if (count == 1) | 
 |  |  |       { | 
 |  |  |          dw_list.SetItemString(row, L"pic", L""); | 
 |  |  |          dw_list.Redraw(); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       KXMLDOMElement e1 = dw_list.GetRowElement(row); | 
 |  |  |       xstring skuid = e1.getAttribute(L"guid"); | 
 |  |  |       OnShowImage(skuid); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int OnPreviewImage() | 
 |  |  |    { | 
 |  |  |       int row = dw_list.GetNextSelectRow(1); | 
 |  |  |       if (row < 1) row = dw_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dw_list.GetRowCount()) return 0; | 
 |  |  |       KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |       //KXMLDOMElement e = dw_list.GetRowElement(row); | 
 |  |  |       //alert(e.xml); | 
 |  |  |       xstring id = dw_list.GetItemString( row, L"@guid"); | 
 |  |  |       //alert(id); | 
 |  |  |  | 
 |  |  |       HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |       KXMLDOMElement e1 = tv_folder.GetItemData(hItem); | 
 |  |  |       xstring categoryid = e1.selectSingleNode(L"@guid").text(); | 
 |  |  |       //alert(categoryid); | 
 |  |  |       xaserverarg* arg = new xaserverarg; | 
 |  |  |       arg->AddArg(L"SKUID", id); | 
 |  |  |       arg->AddArg(L"CategoryID", categoryid); | 
 |  |  |  | 
 |  |  |       OpenWindow(L"dev:xpage[PictureView.Product3.vx]", (LPARAM)arg); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int ItemMaint() | 
 |  |  |    { | 
 |  |  |       HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |       KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |       //xstring no = e.getAttribute(L"no"); | 
 |  |  |       //if(no==L"") return 1; | 
 |  |  |       xaserverarg arg; | 
 |  |  |       //xstring guid = e.getAttribute(L"guid"); | 
 |  |  | 	 | 
 |  |  |  | 
 |  |  |       int row = dw_list.GetNextSelectRow(1); | 
 |  |  |       if (row < 1) row = dw_list.GetRow(); | 
 |  |  |       if (row < 1 || row > dw_list.GetRowCount()) return 0; | 
 |  |  |       xstring guid = dw_list.GetItemString(row, L"@guid"); | 
 |  |  |       if (guid == L"") return 1; | 
 |  |  |       arg.AddArg(L"skuid", guid); | 
 |  |  |  | 
 |  |  |       /* | 
 |  |  |       if(no==L"NP0000FS" || no==L"UP0000FS") | 
 |  |  |       { | 
 |  |  |          OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); | 
 |  |  |       }else | 
 |  |  |       { | 
 |  |  |          LPARAM  pr = g_xdoc_product; | 
 |  |  |          OpenWindow(L"dev:xpage[ProductLibraryItemMaint.vx]",pr); | 
 |  |  |       } | 
 |  |  |       */ | 
 |  |  |       //KXMLDOMElement ele = g_xdoc_product.getRowElement(L"data/Item", 1); | 
 |  |  |       //alert(ele.xml); | 
 |  |  |  | 
 |  |  |       OpenWindow(L"dev:xpage[ProductLibraryItemMaint3.vx]", arg); | 
 |  |  | # | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int ItemAdd() | 
 |  |  |    { | 
 |  |  |       HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |       HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |       xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |  | 
 |  |  |       KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |       //alert(e.xml); | 
 |  |  |       /*xstring no = e.getAttribute(L"no"); | 
 |  |  |       if(no==L"") return 1; | 
 |  |  |       if(no==L"NP0000FS" || no==L"UP0000FS") | 
 |  |  |       { | 
 |  |  |          OpenWindow(L"dev:xpage[PackSchemaMaint.goodslib.vx]"); | 
 |  |  |       }else | 
 |  |  |       { | 
 |  |  |          int p = no; | 
 |  |  |          OpenWindow(L"dev:xpage[SO.autolist.goodslib.add.vx]",p); | 
 |  |  |       }*/ | 
 |  |  |       xstring guid = e.getAttribute(L"guid"); | 
 |  |  |       if (guid == L"") return 1; | 
 |  |  |       xaserverarg arg; | 
 |  |  | 		 | 
 |  |  |       arg.AddArg(L"guid", e.getAttribute(L"guid")); | 
 |  |  |       if (name == L"个人产品") | 
 |  |  |          arg.AddArg(L"FolderID", e.getAttribute(L"guid")); | 
 |  |  |       else | 
 |  |  |          arg.AddArg(L"CategoryID", e.getAttribute(L"guid")); | 
 |  |  |       xstring No = e.getAttribute(L"CategoryNo"); | 
 |  |  |       if (No == L"") No = e.getAttribute(L"no"); | 
 |  |  |       xstring Name = e.getAttribute(L"CName"); | 
 |  |  |       if (Name == L"") Name = e.getAttribute(L"cname"); | 
 |  |  |       arg.AddArg(L"No", No); | 
 |  |  |       arg.AddArg(L"CName", Name); | 
 |  |  |       OpenWindow(L"dev:xpage[Quick.Input.NewProduct.vx]", (LPARAM)&arg); | 
 |  |  |  | 
 |  |  |       if (arg.GetArgString(L"data.modify") == L"1")RetrieveData(); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAddFolder() | 
 |  |  |    { | 
 |  |  |       HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |       HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |       xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |       xstring selectname = tv_folder.GetItemLabel(hItem); | 
 |  |  |  | 
 |  |  |       xaserverarg arg; | 
 |  |  |       if (hItem != hTopItem) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |          xstring folder = e.getAttribute(L"guid"); | 
 |  |  |          if (folder != L"") | 
 |  |  |          { | 
 |  |  |             arg.AddArg(L"parentCategoryID", folder); | 
 |  |  |             OpenWindow(L"dev:xpage[UserFolderMaint.vx]",(LPARAM)&arg); | 
 |  |  |             /*if(arg.GetArgString(L"FolderID")!=L"") | 
 |  |  |             { | 
 |  |  |                int child = tv_folder.GetChildItem(hItem); | 
 |  |  |                if(!child) | 
 |  |  |                { | 
 |  |  |                   ExpandItem(hItem); | 
 |  |  |                } | 
 |  |  |                else | 
 |  |  |                { | 
 |  |  |                   KXMLDOMElement e1 = cast(tv_folder.GetItemData(hItem) as KXMLDOMElement); | 
 |  |  |                   KXMLDOMElement e2 = e1.cloneNode(0); | 
 |  |  |                   e2. | 
 |  |  |                } | 
 |  |  |             }*/ | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnMaintFolder() | 
 |  |  |    { | 
 |  |  |       HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |       HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |       xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |       xstring selectname = tv_folder.GetItemLabel(hItem); | 
 |  |  |  | 
 |  |  |       xaserverarg arg; | 
 |  |  |       if (name == L"个人库" && selectname == L"新产品" && tv_folder.GetParentItem(hItem) == hTopItem) return 1; | 
 |  |  |       if (hItem != hTopItem) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |          xstring folder = e.getAttribute(L"guid"); | 
 |  |  |          if (folder != L"") | 
 |  |  |          { | 
 |  |  |             arg.AddArg(L"CategoryID", folder); | 
 |  |  |             OpenWindow(L"dev:xpage[UserFolderMaint.vx]", (LPARAM)&arg); | 
 |  |  |             if (arg.GetArgString(L"label") != L"") | 
 |  |  |             { | 
 |  |  |                tv_folder.SetItemLabel(hItem, arg.GetArgString(L"label")); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令发布函数 | 
 |  |  |    int OnCmdDispatch(xstring comdid) | 
 |  |  |    { | 
 |  |  |       int hCursor; | 
 |  |  |       xstring name = L""; | 
 |  |  |       if (comdid == L"xmRefresh") | 
 |  |  |       { | 
 |  |  |          return RetrieveData(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmCarGoodsDelete") | 
 |  |  |       { | 
 |  |  |          CarGoodsDelete(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmAddFolder") | 
 |  |  |       { | 
 |  |  |          return OnAddFolder(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmMaintFolder") | 
 |  |  |       { | 
 |  |  |          return OnMaintFolder(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmClose") | 
 |  |  |       { | 
 |  |  |          CloseWindow(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmCarGoodsMaint") | 
 |  |  |       { | 
 |  |  | #ifdef shouldfinish | 
 |  |  |          OpenWindow(L"dev:xpage[ShoppingCartProductMaint.vx]", trust(g_xdoc_shoppingcart as int)); | 
 |  |  | #endif | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmCarMaint") | 
 |  |  |       { | 
 |  |  |          OpenWindow(L"dev:xpage[SO.autolist.Shopcar.vx]"); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmSaleOrder") | 
 |  |  |       { | 
 |  |  |          int rw = dwc_list.GetNextSelectRow(1); | 
 |  |  |          xstring content = L"<data>"; | 
 |  |  |          while (rw > 0) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xe = OnGetCarListRowElement(rw); | 
 |  |  |             content += xe.xml(); | 
 |  |  |             rw = dwc_list.GetNextSelectRow(rw + 1); | 
 |  |  |  | 
 |  |  |          } | 
 |  |  |          content += L"</data>"; | 
 |  |  |          xaserverarg carg; | 
 |  |  | 			 | 
 |  |  |          carg.AddArg(L"content", content); | 
 |  |  |          OpenWindow(L"dev:xpage[SO.Simulation.Import.vx]",  carg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmEnquiry") | 
 |  |  |       { | 
 |  |  |          int rw = dwc_list.GetNextSelectRow(1); | 
 |  |  |          xstring content = L"<data>"; | 
 |  |  |          while (rw > 0) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xe = OnGetCarListRowElement(rw); | 
 |  |  |             content += xe.xml(); | 
 |  |  |             rw = dwc_list.GetNextSelectRow(rw + 1); | 
 |  |  |          } | 
 |  |  |          content += L"</data>"; | 
 |  |  |          xaserverarg carg; | 
 |  |  | 			 | 
 |  |  |          carg.AddArg(L"content", content); | 
 |  |  |          OpenWindow(L"dev:xpage[Enquiry.Import.vx]", carg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmPurchar") | 
 |  |  |       { | 
 |  |  |          int rw = dwc_list.GetNextSelectRow(1); | 
 |  |  |          xstring content = L"<data>"; | 
 |  |  |          while (rw > 0) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xe = OnGetCarListRowElement(rw); | 
 |  |  |             content += xe.xml(); | 
 |  |  |             rw = dwc_list.GetNextSelectRow(rw + 1); | 
 |  |  |          } | 
 |  |  |          content += L"</data>"; | 
 |  |  |          xaserverarg carg ; | 
 |  |  |          carg.AddArg(L"content", content); | 
 |  |  |          OpenWindow(L"dev:xpage[PO.Import.vx]", (LPARAM)&carg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmSearch") | 
 |  |  |       { | 
 |  |  |          RetrieveData(); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmQuote") | 
 |  |  |       { | 
 |  |  |          int rw = dwc_list.GetNextSelectRow(1); | 
 |  |  |          xstring content = L"<data>"; | 
 |  |  |          while (rw > 0) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement xe = OnGetCarListRowElement(rw); | 
 |  |  |             content += xe.xml(); | 
 |  |  |             rw = dwc_list.GetNextSelectRow(rw + 1); | 
 |  |  |          } | 
 |  |  |          content += L"</data>"; | 
 |  |  |          xaserverarg carg; | 
 |  |  |          carg.AddArg(L"content", content); | 
 |  |  |          OpenWindow(L"dev:xpage[Quote.Import.vx]",  (LPARAM) & carg); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmAdd") | 
 |  |  |       { | 
 |  |  |          return ItemAdd(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmDelete") | 
 |  |  |       { | 
 |  |  |          int row = dw_list.GetRow(); | 
 |  |  |          if (row < 1) return 1; | 
 |  |  |          xstring skuid = dw_list.GetItemString( row, L"@guid"); | 
 |  |  |          xml skuid_x = ViewObject::RetrieveData(L"/sale/data/ProductLibrary3/ProductNumberone", L"SKUID", skuid); | 
 |  |  |          xstring  skuidEx = skuid_x.text(); | 
 |  |  |          int  skuid1 = skuidEx.toInt(); | 
 |  |  |          if (skuid1) | 
 |  |  |          { | 
 |  |  |             if (skuid1 > 0) | 
 |  |  |             { | 
 |  |  |                alert(L"订单已有产品,不允许删除!"); | 
 |  |  |                return 1; | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |  | 
 |  |  |          DeleteRow(row); | 
 |  |  |  | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmCarAdd") | 
 |  |  |       { | 
 |  |  |          HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |          name = xcontrol(GetControl(L"frame:ed_goodscar")).GetText(); | 
 |  |  |          if (name != L"") | 
 |  |  |          { | 
 |  |  |             if (ShoppingCartView::AddCar(name) == 1) | 
 |  |  |             { | 
 |  |  |                tv_folder.InsertChildItem(LookupTopFolder(tv_folder.GetSelectedItem()), | 
 |  |  |                   name, 0, 35); | 
 |  |  |             } | 
 |  |  |          } | 
 |  |  |          xutil::RestoreCursor(hCursor); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmMaint") | 
 |  |  |       { | 
 |  |  |          return ItemMaint(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmAddImage") | 
 |  |  |       { | 
 |  |  |          return OnAddImage(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmDeleteImage") | 
 |  |  |       { | 
 |  |  |          return OnDeleteImage(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmPreviewImage") | 
 |  |  |       { | 
 |  |  |          return OnPreviewImage(); | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmPropConfigure") | 
 |  |  |       { | 
 |  |  | #ifdef shouldfinish | 
 |  |  |          int r = cast(g_xdoc_product.getData(L"data/Item", L"@guid") as int); | 
 |  |  |          OpenWindow(L"dev:xpage[Product.ItemProp.Maint.vx]", r); | 
 |  |  | #endif | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmRertieve") | 
 |  |  |       { | 
 |  |  |          /* | 
 |  |  |          int hItem1 = tv_folder.GetSelectedItem(); | 
 |  |  |          KXMLDOMElement e2= tv_folder.GetItemData(hItem1); | 
 |  |  |          xstring no1 = e2.getAttribute(L"no"); | 
 |  |  |          xml x2 = vcontrol::RetrieveData(L"/sale/data/SO/goods/usergoods/listex1",L"parent",no1); | 
 |  |  |          g_xdoc_product.Retrieve(x2); | 
 |  |  |          */ | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       else if (comdid == L"xmToCar") | 
 |  |  |       { | 
 |  |  |          name = xcontrol(GetControl(L"frame:cbx_goodscar")).GetText(); | 
 |  |  |          if (name == L"==选择购物车==L") | 
 |  |  |          { | 
 |  |  |             alert(L"请选择购物车"); | 
 |  |  |             return 1; | 
 |  |  |          } | 
 |  |  |          int xrow = dw_list.GetNextSelectRow(1); | 
 |  |  |          xstring goodsid = L""; | 
 |  |  |          xstring html = L"<data>"; | 
 |  |  |          while (xrow > 0) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement e =dw_list.GetRowElement(xrow); | 
 |  |  |             goodsid = ProductLibraryView::GetElementString(e, L"@guid"); | 
 |  |  |             html += L"<item goodid='" + goodsid + L"' id ='" + ProductLibraryView::GetGuid() + L"'/>"; | 
 |  |  |             xrow = dw_list.GetNextSelectRow(xrow + 1); | 
 |  |  |          } | 
 |  |  |          html += L"</data>"; | 
 |  |  |          trace(html); | 
 |  |  |          if (ShoppingCartView::GoodsImport(name, html) == 1) | 
 |  |  |             alert(L"添加错误!"); | 
 |  |  |          else | 
 |  |  |             alert(L"添加成功"); | 
 |  |  |          return 1; | 
 |  |  |       } | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //命令处理事件 | 
 |  |  |    int OnXCommand(TEvent* evt, int param) | 
 |  |  |    { | 
 |  |  |       return OnCmdDispatch(evt->xcommand.pStrID); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //查找当前树项的顶级目录 | 
 |  |  |    HTREEITEM LookupTopFolder(HTREEITEM hItem) | 
 |  |  |    { | 
 |  |  |       HTREEITEM hRoot = tv_folder.GetRootItem(); | 
 |  |  |       while (tv_folder.GetParentItem(hItem)) hItem = tv_folder.GetParentItem(hItem); | 
 |  |  |       return hItem; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //插入产品类项的子项 | 
 |  |  |    int MakeGoodsFolderItem(HTREEITEM hItem, xstring sno) | 
 |  |  |    { | 
 |  |  |       xml x = ProductLibraryView::GetTreeChildItems3(sno); | 
 |  |  |       if (!x) return 0; | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); | 
 |  |  |       int len = nlist.length(); | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = nlist.item(i); | 
 |  |  |          xstring name = e.getAttribute(L"CName"); | 
 |  |  |          xstring no = e.getAttribute(L"CategoryNo"); | 
 |  |  |          xstring label = no.trim() + L" " + name; | 
 |  |  |  | 
 |  |  |          HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); | 
 |  |  |          xstring child = e.getAttribute(L"Childs"); | 
 |  |  |          if (child == L"") | 
 |  |  |             tv_folder.SetItemChild(h, 1); | 
 |  |  |          else if (child != L"0") | 
 |  |  |             tv_folder.SetItemChild(h, 1); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //插入新产品目录子项 | 
 |  |  |    int MakeUserGoodsFolderItem(HTREEITEM hItem, xstring sno) | 
 |  |  |    { | 
 |  |  |       xml x = ProductLibraryView::GetTreeUserChildItems3(sno); | 
 |  |  |       if (!x) return 0; | 
 |  |  |  | 
 |  |  |       KXMLDOMNodeList nlist = x.selectNodes(L"//Item"); | 
 |  |  |       int len = nlist.length(); | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = nlist.item(i); | 
 |  |  |          xstring name = e.getAttribute(L"CName"); | 
 |  |  |          xstring no = e.getAttribute(L"CategoryNo"); | 
 |  |  |          xstring label = no.trim() + L" " + name; | 
 |  |  |  | 
 |  |  |          HTREEITEM h = tv_folder.InsertChildItem(hItem, label, e, 15); | 
 |  |  |          xstring child = e.getAttribute(L"Childs"); | 
 |  |  |          if (child == L"") | 
 |  |  |             tv_folder.SetItemChild(h, 1); | 
 |  |  |          else if (child != L"0") | 
 |  |  |             tv_folder.SetItemChild(h, 1); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //插入购物车项 | 
 |  |  |    int ExpandCatChildFolder(HTREEITEM hItem, KXMLDOMElement ele, int image) | 
 |  |  |    { | 
 |  |  |       KXMLDOMNodeList nlist = ele.selectNodes(L"item"); | 
 |  |  |       int len = nlist.length(); | 
 |  |  |       if (len > 0) tv_folder.SetItemChild(hItem, 1); | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = nlist.item(i); | 
 |  |  |          xstring name = e.getAttribute(L"name"); | 
 |  |  |          HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); | 
 |  |  |          ExpandCatChildFolder(h, e, 35); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |    int MakeGoodCarFolderItem(HTREEITEM hItem) | 
 |  |  |    { | 
 |  |  |       xml x = ShoppingCartView::GetRoleList(); | 
 |  |  |       if (!x) return 0; | 
 |  |  |       KXMLDOMNodeList nlist = x.selectNodes(L"/data/item"); | 
 |  |  |       int len = nlist.length(); | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = nlist.item(i); | 
 |  |  |          xstring name = e.getAttribute(L"name"); | 
 |  |  |          HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, 35); | 
 |  |  |          ExpandCatChildFolder(h, e, 35); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int ExpandItem(HTREEITEM hItem) | 
 |  |  |    { | 
 |  |  |       HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |       xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |       HTREEITEM child = tv_folder.GetChildItem(hItem); | 
 |  |  |       xstring no = L""; | 
 |  |  |       KXMLDOMElement e; | 
 |  |  |       if (name == L"公司库" && !child) | 
 |  |  |       { | 
 |  |  |          no = L""; | 
 |  |  |          if (hTopItem != hItem) | 
 |  |  |          { | 
 |  |  |             e = tv_folder.GetItemData(hItem); | 
 |  |  |             no = e.getAttribute(L"categoryid"); | 
 |  |  |          } | 
 |  |  |          else | 
 |  |  |          { | 
 |  |  |             e = tv_folder.GetItemData(hItem); | 
 |  |  |             no = e.getAttribute(L"categoryid"); | 
 |  |  |          } | 
 |  |  |          MakeGoodsFolderItem(hItem, no); | 
 |  |  |       } | 
 |  |  |       else if (name == L"个人库" && !child) | 
 |  |  |       { | 
 |  |  |          no = L""; | 
 |  |  |          if (hTopItem != hItem) | 
 |  |  |          { | 
 |  |  |             e = tv_folder.GetItemData(hItem); | 
 |  |  |             no = e.getAttribute(L"categoryid"); | 
 |  |  |             MakeUserGoodsFolderItem(hItem, no); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       else if (name == L"购物车" && !child) | 
 |  |  |       { | 
 |  |  |          if (hItem == hTopItem)MakeGoodCarFolderItem(hItem); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    //树展开 | 
 |  |  |    int OnTreeExpanding(TEvent * evt, int p) | 
 |  |  |    { | 
 |  |  |       NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; | 
 |  |  |       HTREEITEM hItem = nmtv.itemNew.hItem; | 
 |  |  |       return ExpandItem(hItem); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int ResetAgent(xstring agentAsk) | 
 |  |  |    { | 
 |  |  |       if (agentFor != agentAsk) | 
 |  |  |       { | 
 |  |  |          agentFor = agentAsk; | 
 |  |  |          m_agentNode = 0; | 
 |  |  |          SetAgent(); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    HTREEITEM LookupCustomerFolder(HTREEITEM hItem) | 
 |  |  |    { | 
 |  |  |       while (true) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e1 = tv_folder.GetItemData(hItem); | 
 |  |  |          xstring str = e1.getAttribute(L"no"); | 
 |  |  |          if (str.find(L"Customer:") >= 0) return hItem; | 
 |  |  |          hItem = tv_folder.GetParentItem(hItem); | 
 |  |  |          if (hItem == 0) break; | 
 |  |  |       } | 
 |  |  |       return 0; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    xstring LookupCustomer(HTREEITEM hItem) | 
 |  |  |    { | 
 |  |  |       hItem = LookupCustomerFolder(hItem); | 
 |  |  |       if (hItem == 0) return L""; | 
 |  |  |       KXMLDOMElement e1 = tv_folder.GetItemData(hItem); | 
 |  |  |       xstring str = e1.getAttribute(L"no"); | 
 |  |  |       return str.mid(xstring(L"Customer:").length(), 9999); | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int RetrieveData() | 
 |  |  |    { | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       HTREEITEM hItem = tv_folder.GetSelectedItem(); | 
 |  |  |       HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |       xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |       xstring selectname = tv_folder.GetItemLabel(hItem); | 
 |  |  |  | 
 |  |  |       xcontrol query = GetControl(L"sl_search"); | 
 |  |  |       xstring queryString = query.GetText(); | 
 |  |  |  | 
 |  |  |       if (hItem == hTopItem) | 
 |  |  |       { | 
 |  |  |          dw_list.Reset(); | 
 |  |  |          dw_list.SetReadOnly(true); | 
 |  |  |          dw_list.Redraw(); | 
 |  |  |          dwc_list.Reset(); | 
 |  |  |          dwc_list.SetReadOnly(true); | 
 |  |  |          dwc_list.Redraw(); | 
 |  |  |  | 
 |  |  |          im.Reset(); | 
 |  |  |          im.Redraw(); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |          xshtml xs1 = GetControl(L"html_detail"); | 
 |  |  |          xs1.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); | 
 |  |  |  | 
 |  |  |          if (name != L"公司库") return 1; | 
 |  |  |       } | 
 |  |  |       //return 1; | 
 |  |  |  | 
 |  |  |       HCURSOR hCursor = xutil::SetCursorWait(); | 
 |  |  |  | 
 |  |  |       if (name == L"购物车") | 
 |  |  |       { | 
 |  |  |          if (selectname != name) | 
 |  |  |          { | 
 |  |  |             KXMLDOMElement e1 = tv_folder.GetItemData(hItem); | 
 |  |  |             xstring str = e1.getAttribute(L"no"); | 
 |  |  |             alert(str); | 
 |  |  |             if (str.find(L"Customer:") == 0 || str.find(L"SO:") == 0) | 
 |  |  |             { | 
 |  |  |                m_customer = LookupCustomer(hItem); | 
 |  |  |                if (str.find(L"Customer:") == 0) | 
 |  |  |                   dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodscustomerlist"); | 
 |  |  |                else | 
 |  |  |                   dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodssolist"); | 
 |  |  |                dwc_list.Reset(); | 
 |  |  |                dwc_list.SetReadOnly(true); | 
 |  |  |                dw_list.Retrieve(ShoppingCartView::GetGoodsList(str, queryString)); | 
 |  |  |             } | 
 |  |  |             else if (e1.getAttribute(L"categoryid") != L"") | 
 |  |  |             { | 
 |  |  |                xstring categoryid = e1.getAttribute(L"categoryid"); | 
 |  |  |                dwc_list.SetDataObject(ProductLibraryView::GetMaintListForm3(categoryid)); | 
 |  |  |                dwc_list.SetReadOnly(true); | 
 |  |  |                dwc_list.Reset(); | 
 |  |  |                dw_list.Retrieve(ProductLibraryView::GetMaintList3(categoryid, queryString, L"")); | 
 |  |  |                dwc_list.Redraw(); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); | 
 |  |  |                dwc_list.SetReadOnly(true); | 
 |  |  |                dwc_list.Reset(); | 
 |  |  |                dw_list.Retrieve(ShoppingCartView::GetGoodsList(selectname, queryString)); | 
 |  |  |             } | 
 |  |  |             //dwc_list.PostRetrieve(); | 
 |  |  |             dwc_list.Redraw(); | 
 |  |  |  | 
 |  |  |             xshtml xs = GetControl(L"html_detail"); | 
 |  |  |             if (dwc_list.GetRowCount() >= 1) | 
 |  |  |             { | 
 |  |  |                xs.SetContent(makeGoodscarHtml(1)); | 
 |  |  |  | 
 |  |  |                if (m_customer != L"") | 
 |  |  |                { | 
 |  |  |                   xstring skuid =dw_list.GetItemString( 1, L"SKUID"); | 
 |  |  |                   xstring customerItemNo =dw_list.GetItemString( 1, L"CustomerItemNo"); | 
 |  |  |                   OnShowImage(skuid, customerItemNo); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                im.Reset(); | 
 |  |  |                im.Redraw(); | 
 |  |  |  | 
 |  |  |                xs = GetControl(L"html_detail"); | 
 |  |  |                xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); | 
 |  |  |             } | 
 |  |  |             xs.Redraw(); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |  | 
 |  |  |          if (name == L"个人库" || name == L"公司库") | 
 |  |  |          { | 
 |  |  |             xstring no = L"N000005"; | 
 |  |  |             if (name == L"个人库") no = L"U000005"; | 
 |  |  |  | 
 |  |  |             if (hItem != hTopItem) | 
 |  |  |             { | 
 |  |  |                KXMLDOMElement e = tv_folder.GetItemData(hItem); | 
 |  |  |                no = e.getAttribute(L"guid"); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |                return 1; | 
 |  |  |  | 
 |  |  |             /*   dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(no)); | 
 |  |  |                dw_list = GetControl(L"dw_list"); | 
 |  |  |                dw_list.Reset(); | 
 |  |  |                dw_list.SetReadOnly(true); | 
 |  |  |             */ | 
 |  |  |  | 
 |  |  |             if (name == L"个人库") | 
 |  |  |                dw_list.Retrieve(ProductLibraryView::GetMaintRoleList3(no)); | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                if (queryString != L"") | 
 |  |  |                { | 
 |  |  |  | 
 |  |  |                   if (no == L"N000005") | 
 |  |  |                      dw_list.Retrieve(ProductLibraryView::GetMaintList3(L"", queryString, L"")); | 
 |  |  |                   else | 
 |  |  |                      dw_list.Retrieve(ProductLibraryView::GetMaintList3(no, queryString, L"")); | 
 |  |  |                } | 
 |  |  |                else | 
 |  |  |                { | 
 |  |  |                   if (no == L"N000005") return 1; | 
 |  |  |                   dw_list.Retrieve(ProductLibraryView::GetMaintList3(no)); | 
 |  |  |                } | 
 |  |  |             } | 
 |  |  |             //dw_list.PostRetrieve(); | 
 |  |  |             dw_list.Redraw(); | 
 |  |  |  | 
 |  |  |             xshtml xs = GetControl(L"html_detail"); | 
 |  |  |             if (dw_list.GetRowCount() > 0) | 
 |  |  |             { | 
 |  |  |                xs.SetContent(makeHtml(1)); | 
 |  |  |                xstring id = dw_list.GetItemString( 1, L"@guid"); | 
 |  |  |                OnShowImage(id); | 
 |  |  |             } | 
 |  |  |             else | 
 |  |  |             { | 
 |  |  |                im.Reset(); | 
 |  |  |                im.Redraw(); | 
 |  |  |  | 
 |  |  |                xs.SetContent(L"<html><body style='margin:2;background-color:#ccdccc none #f0f0f0 none'/></html>"); | 
 |  |  |             } | 
 |  |  |             xs.Redraw(); | 
 |  |  |          } | 
 |  |  |       } | 
 |  |  |       xutil::RestoreCursor(hCursor); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnTreeSelChanged(TEvent * evt, int p) | 
 |  |  |    { | 
 |  |  |       NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh; | 
 |  |  |       HTREEITEM hItem = nmtv.itemNew.hItem; | 
 |  |  |       HTREEITEM hTopItem = LookupTopFolder(hItem); | 
 |  |  |       xstring name = tv_folder.GetItemLabel(hTopItem); | 
 |  |  |       xstring selectname = tv_folder.GetItemLabel(hItem); | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       m_customer = L""; | 
 |  |  |       //alert(name); | 
 |  |  |       if (name == L"购物车") | 
 |  |  |       { | 
 |  |  |          if (agentFor != L"goodscar")SwitchLayer(L"goodscarsheet", L"sheetframe"); | 
 |  |  |          ResetAgent(L"goodscar"); | 
 |  |  |       } | 
 |  |  |       else | 
 |  |  |       { | 
 |  |  |          if (agentFor != L"goodslib")SwitchLayer(L"goodslibsheet", L"sheetframe"); | 
 |  |  |          if (name == L"个人库") | 
 |  |  |             ResetAgent(L"userlib"); | 
 |  |  |          else | 
 |  |  |             ResetAgent(L"goodslib"); | 
 |  |  |       } | 
 |  |  |       //RetrieveData(); | 
 |  |  |       PostMessage(GetHWND(), 0x401, (WPARAM)L"xmRefresh", 0); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int  ExpandChildFolder(HTREEITEM hItem, KXMLDOMElement pElement) | 
 |  |  |    { | 
 |  |  |       KXMLDOMNodeList nlist = pElement.selectNodes(L"Item"); | 
 |  |  |       int len = nlist.length(); | 
 |  |  |       for (int i = 0; i < len; i++) | 
 |  |  |       { | 
 |  |  |          KXMLDOMElement e = nlist.item(i); | 
 |  |  |          xstring name = e.getAttribute(L"cname"); | 
 |  |  |          xstring sImage = e.getAttribute(L"image"); | 
 |  |  |          int image = 15; | 
 |  |  |          //if(sImage) image = sImage.toInt(); | 
 |  |  |          HTREEITEM h = tv_folder.InsertChildItem(hItem, name, e, image); | 
 |  |  |          tv_folder.SetItemChild(h, 1); | 
 |  |  |          ExpandChildFolder(h, e); | 
 |  |  |       } | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int  InitialFolder() | 
 |  |  |    { | 
 |  |  |       KXMLDOMElement xframeElement = GetElement(); | 
 |  |  |       KXMLDOMElement e = xframeElement.selectSingleNode(L"//xtree[@name='tv_folder']/initial"); | 
 |  |  |       ExpandChildFolder(0, e); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnViewZoomChange(TEvent* evt, int lParam) | 
 |  |  |    { | 
 |  |  |       ximageview im = GetControl(L"im1"); | 
 |  |  |       xcombobox xc = GetControl(L"precent"); | 
 |  |  |       xstring text = xc.GetLBText(); | 
 |  |  |       int p = text.toInt(); | 
 |  |  |       if (p == 0) p = 100; | 
 |  |  |       im.Preview(p); | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnAttachEvent() | 
 |  |  |    { | 
 |  |  |       //绑定工具条点击事件 | 
 |  |  |       AttachEvent(L"WM_XCOMMAND", (FEvent)&ProductLibrary4Win::OnXCommand); | 
 |  |  |       //获取焦点事件,用于重置工具条 | 
 |  |  |       AttachEvent(L"WM_SETFOCUS", (FEvent)&ProductLibrary4Win::OnSetFocus); | 
 |  |  |       AttachEvent(L"dw_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnRowChanged); | 
 |  |  |       AttachEvent(L"dwc_list", L"DWV_ROWFOCUSCHANGED", (FEvent)&ProductLibrary4Win::OnGoodsCarRowChanged); | 
 |  |  |       AttachEvent(L"tv_folder", L"TVN_ITEMEXPANDING", (FEvent)&ProductLibrary4Win::OnTreeExpanding); | 
 |  |  |       AttachEvent(L"tv_folder", L"TVN_SELCHANGED", (FEvent)&ProductLibrary4Win::OnTreeSelChanged); | 
 |  |  |       AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick);   //checkbox打钩事件 | 
 |  |  |       AttachEvent(L"WM_COMMAND", (FEvent)&ProductLibrary4Win::OnCkbCLick2);   //checkbox打钩事件	 | 
 |  |  |  | 
 |  |  |       AttachEvent(L"im1", L"IMG_LDBCLICK", (FEvent)&ProductLibrary4Win::OnImgDBClicked); | 
 |  |  |       AttachEvent(L"precent", L"CBN_SELCHANGE", (FEvent)&ProductLibrary4Win::OnViewZoomChange); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int onload() | 
 |  |  |    { | 
 |  |  |       agentFor = L"goodslib"; | 
 |  |  |       m_customer = 0; | 
 |  |  |  | 
 |  |  |       OnAttachEvent(); | 
 |  |  |  | 
 |  |  |       tv_folder = GetControl(L"tv_folder"); | 
 |  |  |       dw_list = GetControl(L"dw_list"); | 
 |  |  |       dwc_list = GetControl(L"dwc_list"); | 
 |  |  |  | 
 |  |  |       InitialFolder(); | 
 |  |  |  | 
 |  |  |       dw_list.SetDataObject(ProductLibraryView::GetMaintListForm3(L"")); | 
 |  |  |       dw_list = GetControl(L"dw_list"); | 
 |  |  |       dw_list.SetReadOnly(true); | 
 |  |  |  | 
 |  |  |       dwc_list.openUrl(L"/sale/view/ProductLibrary/template/cart/goodslist"); | 
 |  |  |       dwc_list.SetReadOnly(true); | 
 |  |  |  | 
 |  |  |       tv_folder.ExpandItem(tv_folder.GetRootItem()); | 
 |  |  |       tv_folder.ItemFocus(tv_folder.GetRootItem()); | 
 |  |  |  | 
 |  |  |       if (dw_list.GetRowCount()) | 
 |  |  |       { | 
 |  |  |          xshtml xs = GetControl(L"html_detail"); | 
 |  |  |          xs.SetContent(makeHtml(1)); | 
 |  |  |       } | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int onloaded() | 
 |  |  |    { | 
 |  |  |       SetAgent(); | 
 |  |  |  | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  |    int OnImgDBClicked(TEvent * evt, LPARAM  pr) | 
 |  |  |    { | 
 |  |  |       IMGNNMHDR& nmtv = *(IMGNNMHDR*)evt->notify.pnmh; | 
 |  |  |       xstring src = nmtv.path; | 
 |  |  |       /*if(src.length() > 60) | 
 |  |  |          src = src.right(44); | 
 |  |  |       else | 
 |  |  |          src=src.mid(src.find(L"Thumbs", 0)+6, 50); | 
 |  |  |       */ | 
 |  |  |       xaserverarg& arg = *new xaserverarg; | 
 |  |  |       //arg.AddArg(L"src",L"/business/products/chanpin"+src);	 | 
 |  |  |       arg.AddArg(L"src", src); | 
 |  |  |  | 
 |  |  |       //win::OpenWindow(L"dev:xpage[BigPicture.vx]",arg);	 | 
 |  |  |  | 
 |  |  |       int h = openUrl(L"/sale/view/ProductLibrary/xpage/bigpictureview", &arg); | 
 |  |  |       return 1; | 
 |  |  |       /* | 
 |  |  |       xwin x = new xwin; | 
 |  |  |       x.setNativePointer(h); | 
 |  |  |       m_winHwnd = x.GetHWND(); | 
 |  |  |  | 
 |  |  |       xstring sh = doc.GetXml(); | 
 |  |  |       int p = cast(sh as int); | 
 |  |  |       win32::SendMessage(m_winHwnd, 0x401, p, 0); | 
 |  |  |       */ | 
 |  |  |       return 1; | 
 |  |  |    } | 
 |  |  | }; |