锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
鏈夊叧ExtGrid瀵煎嚭Excel鐨勫疄鐜版柟寮忥紝緗戜笂宸茬粡鏈夊緢澶氾紝瀹樻柟涔熺粰鍑轟簡涓涓柟妗堬紝浠g爜涓嶆槸寰堝畬鍠勶紝涓嶈繃宸茬粡鏈夐珮浜哄榪欎釜榪涜浜嗕慨姝c傚叿浣撳疄鐜版柟寮忓強浠g爜鎴戣繖閲屽氨涓嶅啀澶氳浜嗭紝澶у鍙互鍙傜湅錛?br />
http://www.dojochina.com/index.php?q=node/1254錛岄檮浠訛細gridToExcel.js.txt
鍏跺熀鏈濇兂鏄細瀹㈡埛绔牴鎹瓽rid鏁版嵁鐢熸垚Excel鏍煎紡鐨刋ML鏁版嵁錛岀劧鍚庡彂閫佸埌涓涓湇鍔$鏂囦歡錛屾湇鍔$鏂囦歡閫?br />
榪囪瀹欳ontent-Type鏉ュ疄鐜癊xcel鐨勪笅杞姐傚叾涓?#8220;瀵煎嚭Excel”鎸夐挳鐐瑰嚮鎵ц鐨勪唬鐮佸涓嬶細
渚嬪瓙涓湇鍔$浣跨敤鐨凱HP錛岃繖孌典唬鐮佸湪PHP涓彲鑳藉彲浠ュ緢濂界殑宸ヤ綔錛屼絾鏄鏋滃埌浜咼SP絳夌幆澧冧笅錛屽氨鍑虹幇浜嗛棶
棰橈紝瀵煎嚭鏁版嵁鍙兘鏄┖銆?br />
闂鍑哄湪鍝噷鍛紵涓婇潰榪欓儴鍒嗕唬鐮佷腑鐨刟jax鎻愪氦鍏跺疄騫朵笉鏄湡姝g殑ajax鎻愪氦錛屽洜涓篴jax鎻愪氦鏄湪鍚庡彴鎵ц錛屽洜
姝や笉鍙兘瀹炵幇涓嬭澆錛屽彲浠ョ湅鍒拌繖閲屾湁form鍜宨sUpload涓や釜鍙傛暟錛欵xt鐨刟jax璇鋒眰涓鏋滈厤緗簡isUpload:true錛屽垯鍏?br />
ajax灝變笉鏄湡姝g殑ajax璇鋒眰錛岃屾槸閫氳繃鍒涘緩涓涓殣钘忕殑Iframe錛屽茍閫氳繃form鐨則arget鎸囧悜榪欎釜iframe鏉ユ彁浜ゆ暟鎹紝騫?br />
涓斿彂閫佺殑header閲屽皢content-type璁句負浜唌ultipart/form錛屽湪JSP涓笉鑳芥垚鍔熷鍑虹殑鍘熷洜灝卞湪榪欓噷銆傝繖鏍風殑鎻愪氦鏂瑰紡
鍏跺弬鏁伴氳繃request.getParameter鏄彇涓嶅埌鐨勶紝褰撶劧浣犲彲浠ヤ嬌鐢ㄤ笂浼犵粍浠舵潵鑾峰彇錛屼絾榪欐牱浠g爜灝卞彉寰楀鏉傘備笅闈?br />
鏉ヨВ鍐寵繖涓棶棰橈紝鏃㈢劧榪欓噷鐨凙jax浣跨敤鏄竴涓ā鎷熺殑form鎻愪氦錛岄偅鎴戜滑鍏跺疄鍙互瀹屽叏涓嶇敤銆傛垜浠洿鎺ョ敤form鎻?br />
浜や笉鏄洿鐪佷簨鍚楋紵瑙e喅鍔炴硶濡備笅錛氬垱寤轟竴涓殣钘廸orm錛屽叾target璁劇疆涓篲blank錛岀劧鍚庡湪鍏跺唴閮ㄥ垱寤轟竴涓殣钘忓煙瀛?br />
鏀緓ml鏁版嵁錛岀劧鍚庨氳繃POST鏂瑰紡鎻愪氦榪欎釜form鍗沖彲銆?/p>
瀹炵幇浠g爜錛?/p>
JSP浠g爜錛?br />
瀹屾暣浠g爜涓嬭澆錛?a href="/Files/redhatlinux/grid2excel.rar">grid2excel.rar
This isn't exactly a speed tip, but is more about conserving memory by using something called
a "flyweight" to perform simple tasks, which results in higher speed by not clogging up the
browser's memory
澶ф鎰忔濅篃灝辨槸Ext.Fly閲囩敤flyweight妯″紡浣挎墍鏈塮ly鍑烘潵鐨勫厓绱犲叡浜唴瀛橈紝鍙互鎻愰珮紼嬪簭鎵ц閫熷害錛屽噺灝戝唴瀛樺崰鐢ㄣ?br />
榪欐璇濇縺璧蜂簡鎴戝榪欎釜鍑芥暟鐨勫叴瓚o紝姣曠珶榪戞鏃墮棿涓鐩村湪鎼濲S鎬ц兘浼樺寲鐩稿叧闂錛屽“鍐呭瓨”榪欎釜瀛楃溂
闈炲父鏁忔劅銆傚ぇ姒傜湅浜嗕笅Ext婧愮爜瀵筭et鍜宖ly瀹炵幇鐨勯儴鍒嗭紝鐒跺悗鍦ㄧ綉涓婃煡鐪嬩簡涓浜涜祫鏂欙紝緇堜簬瀵逛粬浠箣闂寸殑寮傚悓鏈?br />
浜嗕釜姣旇緝娣卞叆鐨勮璇嗐?br />
Ext鐨勫畼鏂瑰紑鍙戜漢鍛樼粰鍑轟簡濡備笅鐨勮В閲婏細
Ext.Element wraps a lot of functionality around DOM element/node, for example functions like hide, show,
all animation stuff, dimensions getting and setting function and a lot more.
Ext.Element keeps reference to DOM element it is wrapped around in dom property. Once you have an Ext.Element
(e.g. you call Ext.get('some-d') it is an instance of Element class and you can work with it as such.
Now, imagine that you need to hide 1000 DOM nodes, you call 1000 times Ext.get('some-one-of-
1000-id').hide() so you create 1000 instances of Element just to call one function: hide.
Ext.fly is one instance of Ext.Element with "replaceable" DOM node it is wrapped around.
If you call 1000 times Ext.fly('some-one-of-1000-id').hide() you 1000 times replace dom property of one instance of Ext.Element.
Result: higher performance, lower memory usage.
You only need to keep in mind that you cannot keep Element returned by Ext.fly for later use as
it's dom will sooner or later gets replaced by another one.
榪欐璇濅腑錛屽ぇ鑷寸殑鎰忔濆涓嬶細
Ext.Element鏄疎xt瀵笵om鍏冪礌鐨勪竴涓己鏈夊姏灝佽錛屽畠?yōu)畞瑁呬簡寰堝鏂逛究瀵筪om鎿嶄綔鐨勬帴鍙?騫墮氳繃Element鐨刣om灞炴?br />
寮曠敤瀵瑰簲鐨刣om鍏冪礌)錛屽洜姝ゆ瘡鍒涘緩涓涓狤lement鍏冪礌閮藉皢娑堣椾笉灝戠殑鍐呭瓨(涓昏鏄ぇ閲忕殑鎿嶄綔鎺ュ彛娑堣?錛屽洜姝ゅ
鏋滃垱寤鴻繃澶氱殑Element鍏冪礌蹇呯劧瀵艱嚧鍐呭瓨鍗犵敤鐨勫墽澧炲拰緋葷粺鎬ц兘鐨勪笅闄嶃?br />
Ext.get鍜孍xt.fly榪斿洖鐨勯兘鏄竴涓狤lement瀵硅薄錛屼絾鏄疎xt.get榪斿洖鐨勬槸涓涓嫭绔嬬殑Element錛屾嫢鏈夎嚜宸辯嫭绔嬬殑鎿嶄綔鎺ュ彛
灝佽錛屽彲浠ュ皢鍏惰繑鍥炲間繚瀛樺埌鍙橀噺涓紝浠ヤ究浠ュ悗璋冪敤鎿嶄綔絳夛紝榪欐牱涓洪噸鐢ㄥ甫鏉ヤ簡鏂逛究銆備絾鏄畠鐨勪竴涓緢澶х己
鐐瑰氨鏄唴瀛樻秷鑰楅棶棰橈紝鍋囧璋冪敤Ext.get(id)1000嬈★紝鍒欎細鍦ㄥ唴瀛樹腑鍒涘緩1000涓嫭绔婨lement錛屽叾鍐呭瓨鍗犵敤鍙兂鑰?br />
鐭ャ備絾鏄緢澶氭椂鍊欐垜浠彲鑳戒粎浠呭彧鏄璇om鍏冪礌鎵ц涓嬈″緢綆鍗曠殑鎿嶄綔錛屽闅愯棌(hide)錛岃繖鏍峰鏋滄瘡嬈¢兘鍒涘緩
涓涓嫭绔婨lement鏀懼湪鍐呭瓨涓紝瀹炲湪鏄鍐呭瓨鐨勫法澶ф氮璐癸紝鍥犳褰撴垜浠湪鍙渶瑕佹墽琛屼竴嬈℃搷浣滄垨鑰呬竴涓緢綆鍗?br />
鐨勬搷浣滄椂錛岄噰鐢‥xt.get灝辨樉寰楀緢涓嶅悎鐞嗐侲xt.fly姝f槸涓轟簡瑙e喅榪欎釜闂鑰屽嚭鐜幫紝瀹冮氳繃浣挎瘡嬈″垱寤虹殑Element鍏?br />
浜唴瀛樹腑鐨勪竴濂楁搷浣滄帴鍙f潵杈懼埌鑺傜渷鍐呭瓨鐨勬晥鏋溿?/p>
涓嬮潰鏉ョ湅Ext.fly鐨勫疄鐜頒唬鐮?鎴戠畝鍗曞姞浜嗕竴浜涙敞閲?錛?br />
1var flyFn = function(){};
2flyFn.prototype = El.prototype;
3var _cls = new flyFn(); //灝咵lement鐨勬墍鏈夋搷浣滄帴鍙f斁鍦╛cls涓?nbsp;
4![]()
5// dom is optional
6El.Flyweight = function(dom){
7this.dom = dom;
8}; //浠呭寘鍚竴涓猟om灞炴х殑Object
9![]()
10El.Flyweight.prototype = _cls; //灝嗘搷浣滄帴鍙e鍒剁粰Element瀹炰緥瀵硅薄
11El.Flyweight.prototype.isFlyweight = true; //鏍囧織璇lement鏄痜lyweight瀵硅薄
12![]()
13El._flyweights = {}; //flyweight瀵硅薄緙撳瓨瀹瑰櫒
14![]()
15El.fly = function(el, named){
16named = named || '_global';
17el = Ext.getDom(el); //鍙栧緱dom瀵硅薄
18if(!el){
19return null;
20}
21if(!El._flyweights[named]){
22El._flyweights[named] = new El.Flyweight(); //浠呭湪絎竴嬈¤皟鐢‥xt.fly鏃跺垱寤轟竴涓狥lyweight瀵硅薄騫剁紦瀛?nbsp;
23}
24El._flyweights[named].dom = el; //灝唂lyweight瀵硅薄鐨刣om灞炴ф寚鍚戣el
25return El._flyweights[named];
26};
浠庝笂闈㈢殑浠g爜涓嶉毦鐪嬪嚭錛屼粎鍦ㄧ涓嬈¤皟鐢‥xt.fly鏃跺垱寤轟竴涓狥lyweight瀵硅薄錛堣瀵硅薄鍖呭惈浜咵lement鐨勬墍鏈夋搷浣滄帴鍙o級騫跺皢鍏剁紦瀛橈紝
涔嬪悗鐨勬墍鏈塮ly鎿嶄綔閮藉彧鏄慨鏀硅flyweight瀵硅薄鐨刣om灞炴э紝姣忔fly榪斿洖鐨勭粨鏋滈兘鏄叡浜殑鍚屼竴涓猣lyweight瀵硅薄銆?br /> 榪欐牱姣忔fly榪斿洖鐨凟lement鐩告瘮Ext.get鑰岃█錛屽噺灝戜簡姣忔鍒涘緩Element鏃跺澶ч噺鐨勬搷浣滄帴鍙g殑鍒涘緩銆傛墍鏈塮ly鐨勫璞?br /> 閮藉叡浜竴濂桬lement鎿嶄綔鎺ュ彛錛屽唴瀛樺崰鐢ㄨ嚜鐒跺皯浜嗗緢澶氾紝鑰屼笖鎵ц閫熷害涔熷緱鍒頒簡鎻愬崌銆傚湪澶ч噺鐨勫垱寤烘搷浣滀腑鏁?br /> 鏋滀細鏇村姞鏄庢樉銆?/p>
鐢變簬fly鐨勬搷浣滃師鐞嗭紝鎴戜滑涓嶈兘灝唂ly鐨勮繑鍥炵粨鏋滀繚瀛樺湪鍙橀噺涓互渚塊噸鐢紝鍥犱負姣忔fly鎿嶄綔閮藉皢鍙兘鏀瑰彉璇ュ彉閲忕殑
dom鎸囧悜銆傚涓嬮潰鐨勪唬鐮佸氨鏄笉姝g‘鐨勶細
1var my_id = Ext.fly('my_id');
2Ext.fly('another_id'); //姝ゆ椂my_id鐨刣om寮曠敤宸茬粡鍙樹負another_id
3my_id.highlight('FF0000',{ //姝ゅ鐨勬搷浣滃皢鏄 another_id鍏冪礌鐨勬搷浣?nbsp;
4endColor:'0000FF', duration: 3
5});
鍦ㄤ互鍚庝嬌鐢ㄤ腑錛屼竴瀹氳鍚堢悊鐨勫埄鐢‥xt.get鍜孍xt.fly錛岄伩鍏嶆互鐢‥xt.get榪欎釜“閲嶉噺綰?#8221;鐨勬柟娉曘?br />
杞嚜錛歨ttp://www.ajaxbbs.net/post/extjs/Ext-fly-and-Ext-get.html