#pragma once 
 | 
  
 | 
#include <wobject/xwin.hpp> 
 | 
#include <wobject/xurl.hpp> 
 | 
#include <xcontrol/xdwgrid.hpp> 
 | 
#include <xcontrol/xdwpages.hpp> 
 | 
#include <xcontrol/xcombobox.hpp> 
 | 
#include "frame.vframe.vbusiness.hpp" 
 | 
#include <wobject/xurl.hpp> 
 | 
#include "../vutil/publiccode.vutil.vbusiness.hpp" 
 | 
  
 | 
class listEx  
 | 
{ 
 | 
public: 
 | 
    xcombobox dw_col; 
 | 
    KXMLDOMDocument m_configDoc; 
 | 
    xwin* m_this; 
 | 
public: 
 | 
    listEx() {} 
 | 
public: 
 | 
    bool Init(xwin* w, KXMLDOMDocument c) 
 | 
    { 
 | 
        m_this = w; 
 | 
        m_configDoc = c; 
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    int alert(string str) 
 | 
    { 
 | 
        return m_this->alert(str); 
 | 
    } 
 | 
  
 | 
    xstring GetServerUrl() 
 | 
    { 
 | 
        return L""; 
 | 
    } 
 | 
  
 | 
    xnode SetAgentNodeContent(xnode n, string str) 
 | 
    { 
 | 
        return m_this->SetAgentNode(n, str); 
 | 
    } 
 | 
  
 | 
    bool AttachEvent(string control, string notify, xview::FEvent fevt) 
 | 
    { 
 | 
        return m_this->AttachEvent(control, notify, fevt); 
 | 
    } 
 | 
  
 | 
    int getUrl(string aurl, string para, KXMLDOMDocument x) 
 | 
    { 
 | 
        return xurl::get(GetServerUrl(),aurl, para, x); 
 | 
    } 
 | 
  
 | 
    xstring EditCombo(KXMLDOMElement d) 
 | 
    { 
 | 
        if (d.selectSingleNode(L"datas")) { 
 | 
            KXMLDOMElement e = d.selectSingleNode(L"datas"); 
 | 
            KXMLDOMElement ele; 
 | 
            string c1; 
 | 
            string c2; 
 | 
  
 | 
            if (e.selectSingleNode(L"@xquery") && e.selectSingleNode(L"@column1") && e.selectSingleNode(L"@column2")) { 
 | 
                xstring xq = e.selectSingleNode(L"@xquery").text(); 
 | 
                c1 = e.selectSingleNode(L"@column1").text(); 
 | 
                c2 = e.selectSingleNode(L"@column2").text(); 
 | 
                xstring pa = L""; 
 | 
                if (e.selectSingleNode(L"@param")) 
 | 
                    pa = e.selectSingleNode(L"@param").text(); 
 | 
                KXMLDOMDocument x; 
 | 
                xaserverarg arg; 
 | 
                if (pa !=L"") { 
 | 
                    arg.AddArg(pa.mid(0, pa.find(L"=", 0)), pa.mid(pa.find(L"=", 0) + 1, pa.length()), L"xsd:string"); 
 | 
                } 
 | 
                if (xaserver::ExecXQuery(GetServerUrl(), L"[" + xq + L"]", arg.GetString(), x) != 1) 
 | 
                    //if(getUrl(xq, arg, x)!=1) 
 | 
                { 
 | 
                    //trace("error:"+x.GetXml()); 
 | 
                    return L""; 
 | 
                } 
 | 
                ele = x.documentElement(); 
 | 
            } 
 | 
            else { 
 | 
                ele = e; 
 | 
                c1 = L"@column1"; 
 | 
                c2 = L"@column2"; 
 | 
            } 
 | 
  
 | 
            KXMLDOMNodeList nlist = ele.selectNodes(L"*"); 
 | 
            int i = 0; 
 | 
            int s = nlist.length(); 
 | 
            string str = L""; 
 | 
            for (i = 0; i < s; i++) { 
 | 
                KXMLDOMElement xitem = nlist.item(i); 
 | 
                string name = L""; 
 | 
                if (xitem.selectSingleNode(c1)) 
 | 
                    name = xitem.selectSingleNode(c1).text(); 
 | 
                xstring value = L""; 
 | 
                if (xitem.selectSingleNode(c2)) 
 | 
                    value = xitem.selectSingleNode(c2).text(); 
 | 
                xstring tmp = L"<item text='" + value + L"' data='" + name + L"'/>"; 
 | 
                str += tmp; 
 | 
            } 
 | 
            //trace(str); 
 | 
            return str; 
 | 
        } 
 | 
        return L""; 
 | 
    } 
 | 
  
 | 
    xstring EditDate(KXMLDOMElement e) 
 | 
    { 
 | 
        xstring str = L"<xedit name='_cb_grid_value1' bind='_cb_grid_search'/><xlabel caption='~' width='8'/><xedit name='_cb_grid_value2' bind='_cb_grid_search'/>"; 
 | 
        return str; 
 | 
    } 
 | 
  
 | 
    xstring EditSheet(KXMLDOMElement d) 
 | 
    { 
 | 
        xstring str = L"<xedit  name='_cb_grid_value1'  bind='_cb_grid_search'/>"; 
 | 
        if (d.selectSingleNode(L"@sheet")) { 
 | 
            KXMLDOMDocument x; 
 | 
            if (x.loadXML(d.selectSingleNode(L"@sheet").text())) 
 | 
            { 
 | 
                KXMLDOMElement e = x.documentElement(); 
 | 
                if (e.selectSingleNode(L"edit")) { 
 | 
                    KXMLDOMElement ed = e.selectSingleNode(L"edit"); 
 | 
                    if (ed.selectSingleNode(L"@edittype")) 
 | 
                    { 
 | 
                        xstring edittype = ed.selectSingleNode(L"@edittype").text(); 
 | 
                        if (edittype == L"ddlb") { 
 | 
                            str = L"<xcombobox name='_cb_grid_value1' bind='_cb_grid_search'>"; 
 | 
                            xstring ddlbxml = ed.selectSingleNode(L"@ddlbxml").text();//ed.GetAttribute("ddlbxml"); 
 | 
                            KXMLDOMDocument y; 
 | 
                            if (y.loadXML(L"" + ddlbxml)) 
 | 
                            { 
 | 
                                KXMLDOMElement ele = y.documentElement(); 
 | 
                                KXMLDOMNodeList nlist = ele.selectNodes(L"row"); 
 | 
                                int i = 0; 
 | 
                                int s = nlist.length(); 
 | 
                                xstring tmp = L""; 
 | 
                                for (i = 0; i < s; i++) { 
 | 
                                    KXMLDOMElement xitem = nlist.item(i); 
 | 
                                    xstring name = xitem.selectSingleNode(L"Êý¾ÝÁÐ").text(); 
 | 
                                    xstring value = xitem.selectSingleNode(L"ÏÔʾÁÐ").text(); 
 | 
                                    xstring tmp1 = L"<item text='" + value + L"' data='" + name + L"'/>"; 
 | 
                                    tmp += tmp1; 
 | 
                                } 
 | 
                                str += tmp; 
 | 
                            } 
 | 
                            str += L"</xcombobox>"; 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return str; 
 | 
    } 
 | 
  
 | 
    xstring EditTree(KXMLDOMElement e) 
 | 
    { 
 | 
        if (e.selectSingleNode(L"@xpage") && e.selectSingleNode(L"@column1") && e.selectSingleNode(L"@column2")) { 
 | 
            xstring xq = e.selectSingleNode(L"@xpage").text(); 
 | 
            xstring c1 = e.selectSingleNode(L"@column1").text(); 
 | 
            xstring c2 = e.selectSingleNode(L"@column2").text(); 
 | 
  
 | 
            xaserverarg arg; 
 | 
            m_this->OpenWindow(L"dev:xpage[" + xq + L"]", (LPARAM) & arg); 
 | 
            //trace(arg.GetString()); 
 | 
            xstring d1 = arg.GetArgString(c1); 
 | 
            xstring d2 = arg.GetArgString(c2); 
 | 
            //trace(CategoryID, CName); 
 | 
            xcombobox cb_value = m_this->GetControl(L"_cb_grid_value1"); 
 | 
            cb_value.ResetContent(); 
 | 
            if (d1 != L"" && d2 != L"") { 
 | 
                int k = cb_value.AddItem(d2.c_str(), d1.c_str()); 
 | 
                cb_value.SetCurSel( k); 
 | 
            } 
 | 
        } 
 | 
        return L""; 
 | 
    } 
 | 
  
 | 
    int OnSelectDialog() 
 | 
    { 
 | 
        int h = dw_col.GetCurSel(); 
 | 
        if (h < 0) return 0; 
 | 
        int dt0 = dw_col.GetItemData( h); 
 | 
        xstring  str = dt0; 
 | 
        KXMLDOMDocument x; 
 | 
        if (x.loadXML(str)) 
 | 
        { 
 | 
            KXMLDOMElement e = x.documentElement(); 
 | 
            if (e.selectSingleNode(L"@editer")) { 
 | 
                string edittype = e.getAttribute(L"editer"); 
 | 
                if (e.selectSingleNode(L"datas")) { 
 | 
                    KXMLDOMElement d = e.selectSingleNode(L"datas"); 
 | 
                    if (edittype == L"tree" || edittype == L"grid") { 
 | 
                        EditTree(d); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return 0; 
 | 
    } 
 | 
  
 | 
    int OnDropDown(TNotifyEvent* evt, LPARAM p) 
 | 
    { 
 | 
        OnSelectDialog(); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    xstring GetSysDefault(xstring str) 
 | 
    { 
 | 
        xstring ret = str; 
 | 
        if (str == L"now") 
 | 
        { 
 | 
            ret = publiccode::GetCurrentDate(); 
 | 
            ret = ret.left(10); 
 | 
        } 
 | 
        else if (str == L"year") 
 | 
        { 
 | 
            ret = publiccode::GetCurrentDate(); 
 | 
            ret = ret.left(4) + L"-01-01"; 
 | 
        } 
 | 
        else if (str.left(4) == L"year") 
 | 
        { 
 | 
            ret = publiccode::GetCurrentDate(); 
 | 
            if (str == L"year-1") 
 | 
                ret = xstring(ret.left(4).toInt() - 1) + L"-01-01"; 
 | 
            else     if (str == L"year-2") 
 | 
                ret = xstring(ret.left(4).toInt() - 2) + L"-01-01"; 
 | 
            else     if (str == L"year-3") 
 | 
                ret = xstring(ret.left(4).toInt() - 3) + L"-01-01"; 
 | 
            else     if (str == L"year-4") 
 | 
                ret = xstring(ret.left(4).toInt() - 4) + L"-01-01"; 
 | 
            else     if (str == L"year-5") 
 | 
                ret = xstring(ret.left(4).toInt() - 5) + L"-01-01"; 
 | 
            else     if (str == L"year-x") 
 | 
                ret = L"1900-00-00"; 
 | 
            if (str == L"year+1") 
 | 
                ret = xstring(ret.left(4).toInt() + 1) + L"-01-01"; 
 | 
            else     if (str == L"year+2") 
 | 
                ret = xstring(ret.left(4).toInt() + 2) + L"-01-01"; 
 | 
            else     if (str == L"year+3") 
 | 
                ret = xstring(ret.left(4).toInt() + 3) + L"-01-01"; 
 | 
            else     if (str == L"year+4") 
 | 
                ret = xstring(ret.left(4).toInt() + 4) + L"-01-01"; 
 | 
            else     if (str == L"year+5") 
 | 
                ret = xstring(ret.left(4).toInt() + 5) + L"-01-01"; 
 | 
            else     if (str == L"year+x") 
 | 
                ret = L"2150-12-31"; 
 | 
        } 
 | 
        else if (str.left(3) == L"now") 
 | 
        { 
 | 
            xaserverarg arg; 
 | 
            if (str == L"now-90") 
 | 
                arg.AddArg(L"code", L"1", L""); 
 | 
            else if (str == L"now-30") 
 | 
                arg.AddArg(L"code", L"2", L""); 
 | 
            else if (str == L"now-60") 
 | 
                arg.AddArg(L"code", L"4", L""); 
 | 
            else if (str == L"now-180") 
 | 
                arg.AddArg(L"code", L"5", L""); 
 | 
            else 
 | 
                arg.AddArg(L"code", str, L""); 
 | 
            KXMLDOMDocument x; 
 | 
            if (xurl::get(this->GetServerUrl(),L"/sale/data/product/pref/report/initdate", arg.GetString(), x) != 1) 
 | 
                return L""; 
 | 
            KXMLDOMElement e = x.documentElement(); 
 | 
  
 | 
            ret = (xstring)L"" + e.selectSingleNode(L"sDate").text(); 
 | 
        } 
 | 
        else if (str == L"userid") 
 | 
        { 
 | 
            ret = publiccode::GetUser().id; 
 | 
        } 
 | 
        else if (str == L"userno") 
 | 
        { 
 | 
            ret = publiccode::GetUser().no; 
 | 
        } 
 | 
        else if (str == L"username") 
 | 
        { 
 | 
            ret = publiccode::GetUser().name; 
 | 
        } 
 | 
        return ret; 
 | 
    } 
 | 
  
 | 
    int SetSearchDefault(KXMLDOMElement e, int flag) 
 | 
    { 
 | 
        if (e.selectSingleNode(L"@default")) 
 | 
        { 
 | 
            bstring dstr = e.selectSingleNode(L"@default").text(); 
 | 
            xstring d = GetSysDefault(dstr); 
 | 
            xcombobox xc = m_this->GetControl(L"_cb_grid_value1"); 
 | 
            if (flag == 1 || flag == 3) 
 | 
            { 
 | 
                int h = xc.FindString(d); 
 | 
                if (h < 0) h = 0; 
 | 
                xc.SetCurSel( h); 
 | 
            } 
 | 
            else if (flag == 2) //ÈÕÆÚ 
 | 
            { 
 | 
                xc.SetText(d); 
 | 
                xcombobox  xc2 = m_this->GetControl(L"_cb_grid_value2"); 
 | 
                //xc2.SetText(GetSysDefault("now")); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                xc.SetText(d); 
 | 
            } 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int ComboChange(int h) 
 | 
    { 
 | 
        string str = (string)dw_col.GetItemData(h); 
 | 
        //alert(str); 
 | 
        KXMLDOMDocument x; 
 | 
        int flag = 0; 
 | 
        if (x.loadXML(str)) 
 | 
        { 
 | 
            //trace("299 ComboChange"); 
 | 
            xstring xcText = L""; 
 | 
            xcontrol xc = m_this->GetControl(L"_cb_grid_value1"); 
 | 
            if (xc) 
 | 
                xcText = xc.GetText(); 
 | 
            xstring box = L"<hbox>"; 
 | 
            KXMLDOMElement e = x.documentElement(); 
 | 
            if (e.selectSingleNode(L"@editer")) 
 | 
            { 
 | 
                xstring edittype = e.selectSingleNode(L"@editer").text(); 
 | 
                xstring tmp = L""; 
 | 
                if (edittype == L"ddlb") { 
 | 
                    tmp = L"<xcombobox name='_cb_grid_value1'>"; 
 | 
                    tmp += EditCombo(e); 
 | 
                    tmp += L"</xcombobox>"; 
 | 
                    flag = 1; 
 | 
                } 
 | 
                else if (edittype == L"date") { 
 | 
                    //tmp += EditDate(e); 
 | 
                    //tmp = "<xdatetimepick name='_cb_grid_value1'/><xlabel caption='~' width='8'/><xdatetimepick name='_cb_grid_value2'/>"; 
 | 
                    tmp = L"<xedit name='_cb_grid_value1' bind='_cb_grid_search'/><xlabel caption='~' width='8'/><xedit name='_cb_grid_value2' bind='_cb_grid_search'/>"; 
 | 
                    flag = 2; 
 | 
                } 
 | 
                else if (edittype == L"tree" || edittype == L"grid") { 
 | 
                    tmp = L"<xcombobox name='_cb_grid_value1' bind='_cb_grid_search'>"; 
 | 
                    //tmp += EditTree(e); 
 | 
                    tmp += L"</xcombobox>"; 
 | 
                    flag = 3; 
 | 
                } 
 | 
                else { 
 | 
                    tmp = L"<xedit  name='_cb_grid_value1' bind='_cb_grid_search'/>"; 
 | 
                    flag = 99; 
 | 
                } 
 | 
                box += tmp; 
 | 
            } 
 | 
            else if (e.selectSingleNode(L"@sheet")) 
 | 
            { 
 | 
                box += EditSheet(e); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                box += L"<xedit  name='_cb_grid_value1' bind='_cb_grid_search'/>"; 
 | 
                flag = 99; 
 | 
            } 
 | 
            box += L"</hbox>"; 
 | 
            //alert(box); 
 | 
            xnode anode = m_this->GetAgentNode(L"_cb_grid_value"); 
 | 
            if (anode.getNativePointer() == 0) return -1; 
 | 
  
 | 
            SetAgentNodeContent(anode, box); 
 | 
  
 | 
            SetSearchDefault(e, flag); 
 | 
  
 | 
            if (xcText != L"") 
 | 
            { 
 | 
                xcontrol xc2 = m_this->GetControl(L"_cb_grid_value1"); 
 | 
                if (xc2) 
 | 
                    xc2.SetText(xcText); 
 | 
            } 
 | 
            //if(flag == 3) 
 | 
            //    AttachEvent("_cb_grid_value1","CBN_DROPDOWN",OnDropDown);  -->  TO  list 
 | 
        } 
 | 
        return flag; 
 | 
    } 
 | 
  
 | 
    int OnCombboChange(TEvent* evt, LPARAM lParam) 
 | 
    { 
 | 
        int h = dw_col.GetCurSel(); 
 | 
        if (h < 0) return 0; 
 | 
        ComboChange(h); 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    string searchcol(KXMLDOMElement e) 
 | 
    { 
 | 
        if (e.selectSingleNode(L"xml")) { 
 | 
            string colprop = e.selectSingleNode(L"xml").text(); 
 | 
            //trace(colprop); 
 | 
            KXMLDOMDocument y; 
 | 
            y.loadXML(colprop); 
 | 
            //msxml::IXMLDOMElement prop= y.GetXmlDoc().selectSingleNode(L"cell/cellprop[1]"); 
 | 
            KXMLDOMElement cellprop = y.documentElement(); 
 | 
            if (cellprop.selectSingleNode(L"cellprop/@searchcolumn")) { 
 | 
                string searchcolumn = cellprop.selectSingleNode(L"cellprop/@searchcolumn").text(); 
 | 
                return searchcolumn; 
 | 
            } 
 | 
        } 
 | 
        return L"ÊÇ"; 
 | 
    } 
 | 
  
 | 
    int setSheetSearch(KXMLDOMDocument x) 
 | 
    { 
 | 
        KXMLDOMElement e = x.documentElement(); 
 | 
        KXMLDOMElement ele = e.selectSingleNode(L"//row[@rowindex='3']"); 
 | 
        KXMLDOMNodeList nlist = ele.selectNodes(L"cell"); 
 | 
        int i = 0; 
 | 
        int s = nlist.length(); 
 | 
        string agentstr = L"<vbox>"; 
 | 
        int k = 0; 
 | 
        for (i = 0; i < s; i++) 
 | 
        { 
 | 
            KXMLDOMElement xitem = nlist.item(i); 
 | 
            //if(!xitem.selectSingleNode(L"text")) continue; 
 | 
            if (xitem.selectSingleNode(L"text")) {} 
 | 
            else continue; 
 | 
            //trace(xitem.text); 
 | 
            xstring colindex = xitem.selectSingleNode(L"@colindex").text(); 
 | 
            //¿í¶È¡¶10²»ÏÔʾ£¿£¿ÒѾÓÐÁËÊÇ·ñÊDzéѯÁеÄÊôÐÔ£¬ÎªÊ²Ã´»¹ÒªÕâ¸ö£¿ 
 | 
            //if(!e.selectSingleNode(L"//col/item[@colend='"+colindex+"']")) continue; 
 | 
            if (e.selectSingleNode(L"//col/item[@colend='" + colindex + L"']")) 
 | 
            { 
 | 
                KXMLDOMElement colwidth = e.selectSingleNode(L"//col/item[@colend='" + colindex + L"']"); 
 | 
                xstring width = colwidth.selectSingleNode(L"@width").text(); 
 | 
                if (width.toInt() < 10) continue; 
 | 
            } 
 | 
            //ÁÐ 
 | 
            //if(!e.selectSingleNode(L"//row[@rowindex='5']/cell[@colindex='"+colindex+"']")) continue; 
 | 
            if (e.selectSingleNode(L"//row[@rowindex='5']/cell[@colindex='" + colindex +L"']")) {} 
 | 
            else continue; 
 | 
            KXMLDOMElement colename = e.selectSingleNode(L"//row[@rowindex='5']/cell[@colindex='" + colindex + L"']"); 
 | 
            //²éѯÁÐ 
 | 
            xstring searchcolumn = searchcol(colename); 
 | 
            if (searchcolumn == L"·ñ") continue; 
 | 
            //Ó¢ÎÄÃû 
 | 
            string ename = colename.selectSingleNode(L"@column").text(); 
 | 
            //ÖÐÎÄÃû 
 | 
            string cname = L""; 
 | 
            if (xitem.selectSingleNode(L"text")) 
 | 
                cname = xitem.selectSingleNode(L"text").text(); 
 | 
  
 | 
            KXMLDOMElement sheetEle = x.createElement(L"column"); 
 | 
            sheetEle.setAttribute(L"name",ename); 
 | 
            sheetEle.setAttribute(L"cname", cname); 
 | 
            //ÓÐÊôÐÔ 
 | 
            if (colename.selectSingleNode(L"xml")) 
 | 
            { 
 | 
                string colprop = colename.selectSingleNode(L"xml").text(); 
 | 
                //trace(colprop); 
 | 
                KXMLDOMDocument y; 
 | 
                y.loadXML(colprop); 
 | 
                //msxml::IXMLDOMElement prop= y.GetXmlDoc().selectSingleNode(L"cell/cellprop[1]"); 
 | 
                KXMLDOMElement cellprop = y.documentElement(); 
 | 
                //msxml::IXMLDOMElement prop ; 
 | 
                KXMLDOMElement n = cellprop.selectSingleNode(L"cellprop[1]"); 
 | 
                sheetEle.setAttribute(L"sheet", n.xml()); 
 | 
            } 
 | 
            if (cname != L"") 
 | 
                dw_col.AddItem(cname, sheetEle.xml()); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
  
 | 
    int rowSearch(string tpl) 
 | 
    { 
 | 
        //trace(m_configDoc.xml); 
 | 
        //if(!m_configDoc) return -1; //--- 
 | 
        xnode anode = m_this->GetAgentNode(L"gridSearch"); 
 | 
        if (!anode) return -1; 
 | 
        //string str = "<hbox><xcombobox name='_cb_grid_col' width='120'/><xspace width='5'/><vbox><xspace height='1'/><hbox height='19' name='_cb_grid_value'/></vbox><xspace width='5'/><hbox height='20' width='140'><xtoolbutton caption='²éÕÒ' name='_cb_grid_search' width='50' image='6,21'/><xtoolbutton caption='¸ß¼¶²éÕÒ' name='_cb_grid_search_ad' width='80' image='6,10'/></hbox></hbox>"; 
 | 
        string str = L"<hbox><xcombobox name='_cb_grid_col' width='120'/><xspace width='5'/><vbox><xspace height='1' visible='unlayer'/><hbox height='19' name='_cb_grid_value'/></vbox><xspace width='5'/><xtoolbutton caption='²éÕÒ' name='_cb_grid_search' height='20' width='50' src='icons/find.png' image0='6,21'/><xtoolbutton caption='¸ß¼¶...' name='_cb_grid_search_ad' height='20' width='80' src='icons/trans.png' image0='6,10'/></hbox>"; 
 | 
        SetAgentNodeContent(anode, str); 
 | 
        dw_col = m_this->GetControl(L"_cb_grid_col"); 
 | 
        /*xcontrol xc= m_this.GetControl("_cb_grid_col"); 
 | 
        dw_col = GetControlCombox("_cb_grid_col"); 
 | 
        dw_col.setNativePointer(xc.ptr_native_); 
 | 
        int  id = dw_col.ptr_native_; 
 | 
        trace("dw_col = %d",id);    */ 
 | 
        if (m_configDoc) {} 
 | 
        else return 1; 
 | 
        if (m_configDoc.selectSingleNode(L"Config/search")) 
 | 
        { 
 | 
            KXMLDOMNodeList nlist = m_configDoc.selectNodes(L"Config/search[1]/column"); 
 | 
            int s = nlist.length(); 
 | 
            if (s > 0) 
 | 
            { 
 | 
                int i = 0; 
 | 
                for (i = 0; i < s; i++) 
 | 
                { 
 | 
                    KXMLDOMElement e = nlist.item(i); 
 | 
                    if (e.selectSingleNode(L"@cname")) {} 
 | 
                    else continue; 
 | 
                    string name = e.selectSingleNode(L"@cname").text(); 
 | 
                    dw_col.AddItem(name, e.xml()); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        else 
 | 
        { 
 | 
            KXMLDOMDocument x; 
 | 
            int ret = getUrl(tpl, L"<args/>", x); 
 | 
            if (ret == 1 && (xstring)x.xml() != L"") 
 | 
            { 
 | 
                setSheetSearch(x); 
 | 
            } 
 | 
        } 
 | 
        //AttachEvent("_cb_grid_col","CBN_SELCHANGE",OnCombboChange);  //TO list 
 | 
        if (dw_col.GetCount() > 0) 
 | 
        { 
 | 
            dw_col.SetCurSel( 0); 
 | 
            ComboChange(0); 
 | 
        } 
 | 
        return 1; 
 | 
    } 
 | 
    string GridSearchEx() 
 | 
    { 
 | 
        //alert("ex"); 
 | 
        int h = dw_col.GetCurSel(); 
 | 
        if (h < 0) return L""; 
 | 
        xstring  str = (string)dw_col.GetItemData(h); 
 | 
        KXMLDOMDocument x; 
 | 
        if (x.loadXML(str)) 
 | 
        { 
 | 
            KXMLDOMElement e = x.documentElement(); 
 | 
            xstring name = e.selectSingleNode(L"@name").text(); 
 | 
            xstring cls = L"";// = "".space(256); 
 | 
            if (e.selectSingleNode(L"@editer")) 
 | 
                cls = e.selectSingleNode(L"@editer").text(); 
 | 
            else if (e.selectSingleNode(L"@sheet")) 
 | 
                cls = e.selectSingleNode(L"@sheet").text(); 
 | 
            xcombobox xc = m_this->GetControl(L"_cb_grid_value1"); 
 | 
            xstring value = L""; 
 | 
            x.loadXML(L"<items join='and'/>"); 
 | 
            e = x.documentElement(); 
 | 
            KXMLDOMElement ele = x.createElement(L"item"); 
 | 
            ele.setAttribute(L"name", name.c_str()); 
 | 
            //if(cls == "ComboBox") 
 | 
            if (cls == L"ddlb" || cls == L"tree" || cls == L"grid") 
 | 
            { 
 | 
                value = xc.GetText(); 
 | 
                value = (string)xc.GetItemData(); 
 | 
                ele.setAttribute(L"op", L"like"); 
 | 
            } 
 | 
            //else if(cls == "SysDateTimePick32") 
 | 
            else if (cls == L"date") 
 | 
            { 
 | 
                value = xc.GetText(); 
 | 
                ele.setAttribute(L"op", L">="); 
 | 
                xcombobox xc2 = m_this->GetControl(L"_cb_grid_value2"); 
 | 
                if (xc2.GetText() != L"") 
 | 
                { 
 | 
                    KXMLDOMElement ele2 = x.createElement(L"item"); 
 | 
                    ele2.setAttribute(L"name", name.c_str()); 
 | 
                    ele2.setAttribute(L"op", L"<="); 
 | 
                    ele2.setAttribute(L"value", (xc2.GetText() +L" 23:59:59").c_str()); 
 | 
                    e.appendChild(ele2); 
 | 
                } 
 | 
            } 
 | 
            else if (cls != L"") 
 | 
            { 
 | 
                value = xc.GetText(); 
 | 
                KXMLDOMDocument x2; 
 | 
                if (x2.loadXML(cls)) 
 | 
                { 
 | 
                    KXMLDOMElement ele3 = x2.documentElement(); 
 | 
                    if (ele3.selectSingleNode(L"edit")) 
 | 
                    { 
 | 
                        KXMLDOMElement ed = ele3.selectSingleNode(L"edit"); 
 | 
                        if (ed.selectSingleNode(L"@edittype")) 
 | 
                        { 
 | 
                            string edittype = ed.selectSingleNode(L"@edittype").text(); 
 | 
                            if (edittype == L"ddlb") 
 | 
                            { 
 | 
                                value = (string)xc.GetItemData(); 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
                ele.setAttribute(L"op", L"like"); 
 | 
            } 
 | 
            else 
 | 
            { 
 | 
                value = xc.GetText(); 
 | 
                ele.setAttribute(L"op", L"like"); 
 | 
            } 
 | 
            ele.setAttribute(L"value", value.c_str()); 
 | 
            if (value != L"") 
 | 
                e.appendChild(ele); 
 | 
            return e.xml(); 
 | 
        } 
 | 
        return L""; 
 | 
    } 
 | 
}; 
 |