LiFan
2025-05-12 63eebabbfee1bc84850b36967ecac5116a28b73f
jrj/project/business/BasicCode/ForwarderList.cpp
@@ -1,136 +1,137 @@
use "system.vl"
use "win.vl"
use "list.vl"
use "treeview.vm"
use "dev:vm[gridpages.vm]"
#include <wobject/xstring.hpp>
#include <xcontrol/xtreeview.hpp>
#include <xcontrol/xdwgrid.hpp>
#include <wobject/xdouble.hpp>
#include <xcontrol/xlayersheet.hpp>
#include "vbusiness/vframe/listwin.vframe.vbusiness.hpp"
#include "viewobject/view.base.hpp"
using xml = KXMLDOMDocument;
class __declspec(dllexport) ForwarderList : public listwin
{
public:
   //xdwpages dw_pages;
   //xstring m_QueryTxt;
   //KXMLDOMDocument m_configDoc;
   xtreeview      tv_1;
   xstring      sType;
   //static int dw_hWnd;
   //int m_pageIndex;
   //int m_pageNumber;
   //xdwgrid   dw_list;
public:
   ForwarderList(void* implPtr, HWND hWnd) :listwin(implPtr, hWnd) {}
public:
   static ForwarderList* CreateInstance(void* implPtr, void* hWnd)
   {
      ForwarderList* pWin = new ForwarderList(implPtr, (HWND)hWnd);
      return pWin;
   }
unit vbusiness.entity
[
   ForwarderList is extend list;
   about ForwarderList
   [
      field:
      [
   int SetEntityData(xaserverarg arg)
   {
         //xdwpages__ dw_pages;
         string m_QueryTxt;
         msxml::IXMLDOMDocument m_configDoc;
         treeview__      tv_1;
         string      sType;
         static int dw_hWnd;
         int m_pageIndex;
         int m_pageNumber;
      ]
      method:
      [
      arg.AddArg(L"sType", sType);
      xml x;
         int SetEntityData(xaserverarg__ arg)
         {
            arg.AddArg("sType",sType);
            xml__ x = new xml__;
            x.setNativePointer(xml__ ::CreateInstance());
            getUrl("/sale/data/LogisticsCode/entity/list",arg.GetString(),x);
            msxml::IXMLDOMElement e=x.GetXmlDoc().documentElement;
            if(e)
            {
               if(list::dw_pages.__nativept && e.selectSingleNode("@TotalPage"))
               {
                  string s=e.selectSingleNode("@TotalPage").text; //总数量
                  list::dw_pages.SetMaxPage(s.toInt());
               }
            }
            this.dw_list.Retrieve(x);
            this.dw_list.Redraw();
            this.dw_list.SetReadOnly(true);
            return 1;
         }
         int OnRetrieve()
         {
            xaserverarg__ arg = new xaserverarg__;
            arg.setNativePointer(arg.CreateInstance());
            arg.AddArg("pageindex", m_pageIndex.toString()); //第几页
            arg.AddArg("pagenumber", m_pageNumber.toString()); //每页数量
            //trace(list::m_QueryTxt);
            arg.AddArg("QueryTxt", list::m_QueryTxt); //每页数量
            return SetEntityData(arg);
         }
         int OnTreeSelChanged(ref TNotifyEvent evt,int p)
      getUrl(L"/sale/data/LogisticsCode/entity/list", arg.GetString(), x);
      KXMLDOMElement e = x.documentElement();
      /*if (e)
      {
         if (listwin::dw_pages && e.selectSingleNode(L"@TotalPage"))
         {
            ref NMTREEVIEW nmtv = evt.pnmh;
            int hItem = nmtv.itemNew.hItem;
            list::m_QueryTxt = "";
            int wid = tv_1.GetId();
            int hitem=treeview__::GetSelectedItem(wid);
            //c_type=dw_type.GetItemLabel(hitem);
            //如果是跟节点
            int roothitem=treeview__::GetRootItem(wid);
            msxml::IXMLDOMElement e = treeview__::GetItemData(wid,hitem);
            string value = e.SelectSingleNode("@data").text;
            sType= value+"";
            OnRetrieve();
            return 1;
            xstring s = e.selectSingleNode(L"@TotalPage").text(); //总数量
            listwin::dw_pages.SetMaxPage(s.toInt());
         }
         int OnChangePages(ref TNotifyEvent evt,int p)
         {
            ref PAGENMHDR h = evt.pnmh;
            int c = h.cur;
            int hCursor = xutil__::SetCursorWait();
            m_pageIndex = c;
            OnRetrieve();
            xutil__::RestoreCursor(hCursor);
            return 1;
         }
         int ViewUpdate(param pr,string updateItem,xaserverarg__   arg)
            {
               if(   updateItem=="del")
               {
                  int DelRow = this.dw_list.GetRow();
                  this.dw_list.DeleteRow(DelRow);
      }*/
      dw_list.Retrieve(x);
      dw_list.Redraw();
      dw_list.SetReadOnly(true);
      return 1;
   }
               }
               return 1;
            }
         int OnAttachEvent()
         {
            //获得树的选择事件
            AttachEvent("tv_1", "TVN_SELCHANGED",OnTreeSelChanged);
            return 0;
         }
         int onload()
         {
            list::m_QueryTxt = "";
            m_pageIndex = 1;
            m_pageNumber = 30;
            sType="0";
            list::onload();
            OnAttachEvent();
            tv_1 =  new treeview__;
            tv_1.setNativePointer(this.GetControl("tv_1"));
            int wid = tv_1.GetId();
            int root = treeview__::GetRootItem(wid);
            treeview__::ExpandItem(wid,root);
            this.dw_list.SetColumnStaus("ForwarderID",false);
            return 1;
         }
      ]
   ]
]
   int OnRetrieve()
   {
      xaserverarg arg;
      arg.AddArg(L"pageindex", xstring(m_pageIndex)); //第几页
      arg.AddArg(L"pagenumber", xstring(m_pageNumber)); //每页数量
      //trace(list::m_QueryTxt);
      arg.AddArg(L"QueryTxt", listwin::m_QueryTxt); //每页数量
      return SetEntityData(arg);
   }
   int OnTreeSelChanged(TEvent* evt, LPARAM p)
   {
      NMTREEVIEW& nmtv = *(NMTREEVIEW*)evt->notify.pnmh;
      HTREEITEM hItem = nmtv.itemNew.hItem;
      listwin::m_QueryTxt = L"";
      HTREEITEM hitem = tv_1.GetSelectedItem();
      //c_type=dw_type.GetItemLabel(hitem);
      //如果是跟节点
      HTREEITEM roothitem = tv_1.GetRootItem();
      KXMLDOMElement e = tv_1.GetItemData(hitem);
      xstring value = e.selectSingleNode(L"@data").text();
      sType = value + L"";
      OnRetrieve();
      return 1;
   }
   int OnChangePages(TEvent* evt, LPARAM p)
   {
      PAGENMHDR& h = *(PAGENMHDR*)evt->notify.pnmh;
      int c = h.cur;
      HCURSOR hCursor = xutil::SetCursorWait();
      m_pageIndex = c;
      OnRetrieve();
      xutil::RestoreCursor(hCursor);
      return 1;
   }
   int ViewUpdate(LPARAM pr, xstring updateItem, xaserverarg   arg)
   {
      if (updateItem == L"del")
      {
         int DelRow = dw_list.GetRow();
         dw_list.DeleteRow(DelRow);
      }
      return 1;
   }
   int OnAttachEvent()
   {
      //获得树的选择事件
      AttachEvent(L"tv_1", L"TVN_SELCHANGED", (FEvent)&ForwarderList::OnTreeSelChanged);
      return 1;
   }
   int onload()
   {
      SetAgent();
      listwin::m_QueryTxt = L"";
      m_pageIndex = 1;
      m_pageNumber = 30;
      sType = L"0";
      listwin::onload();
      OnAttachEvent();
      tv_1 = GetControl(L"tv_1");
      HTREEITEM root = tv_1.GetRootItem();
      tv_1.ExpandItem(root);
      dw_list.SetColumnState(L"ForwarderID", false);
      OnRetrieve();
      return 1;
   }
};