#pragma once #include #include #include #include #include #include "frame.vframe.vbusiness.hpp" #include #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); } string 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); } string 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""; str += tmp; } //trace(str); return str; } return L""; } string EditDate(KXMLDOMElement e) { string str = L""; return str; } string EditSheet(KXMLDOMElement d) { xstring str = L""; 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""; 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""; tmp += tmp1; } str += tmp; } str += L""; } } } } } return str; } string 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""; 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""; tmp += EditCombo(e); tmp += L""; flag = 1; } else if (edittype == L"date") { //tmp += EditDate(e); //tmp = ""; tmp = L""; flag = 2; } else if (edittype == L"tree" || edittype == L"grid") { tmp = L""; //tmp += EditTree(e); tmp += L""; flag = 3; } else { tmp = L""; flag = 99; } box += tmp; } else if (e.selectSingleNode(L"@sheet")) { box += EditSheet(e); } else { box += L""; flag = 99; } box += L""; //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""; 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"']"); //²éѯÁÐ string 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 = ""; string str = L""; 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"", x); if (ret == 1 && 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""; string 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""); 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""; } };