锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
/**
* 浣滆咃細闄堟澃
* QQ : 710782046
* Email:ovenjackchain@gmail.com
* Blog :http://hi.baidu.com/jackvoilet
*/
var HTMLEditor = Ext.extend(Ext.form.HtmlEditor, {
addImage : function() {
var editor = this;
var imgform = new Ext.FormPanel({
region : 'center',
labelWidth : 55,
frame : true,
bodyStyle : 'padding:5px 5px 0',
autoScroll : true,
border : false,
fileUpload : true,
items : [{
xtype : 'textfield',
fieldLabel : '閫夋嫨鏂囦歡',
name : 'userfile',
id : 'userfile',
inputType : 'file',
allowBlank : false,
blankText : '鏂囦歡涓嶈兘涓虹┖',
height : 25,
anchor : '98%'
}],
buttons : [{
text : '涓婁紶',
type : 'submit',
handler : function() {
var furl="";
furl=imgform.form.findField('userfile').getValue();
var type=furl.substring(furl.length-3).toLowerCase();
var filename=furl.substring(furl.lastIndexOf("\\")+1);
if (furl==""||furl==null) {return;}
if(type!='jpg'&&type!='bmp'&&type!='gif'&&type!='png'){
alert('浠呮敮鎸乯pg銆乥mp銆乬if銆乸ng鏍煎紡鐨勫浘鐗?);
return;
}
imgform.form.submit({
url : '/newsinfo.mvc/AddFiles_newsinfo',
waitMsg : '姝e湪涓婁紶......',
waitTitle : '璇風瓑寰?,
method : 'POST',
success : function() {
var element = document.createElement("img");
element.src = "../UploadFile/"+filename;
element.style.width="300px";
element.style.height="200px";
if (Ext.isIE) {
editor.insertAtCursor(element.outerHTML);
} else {
var selection = editor.win.getSelection();
if (!selection.isCollapsed) {
selection.deleteFromDocument();
}
selection.getRangeAt(0).insertNode(element);
}
win.close();
},
failure : function(form, action) {
form.reset();
if (action.failureType == Ext.form.Action.SERVER_INVALID)
Ext.MessageBox.alert('璀﹀憡',
'涓婁紶澶辮觸錛屼粎鏀寔jpg銆乥mp銆乬if銆乸ng鏍煎紡鐨勫浘鐗?);
}
});
}
}, {
text : '鍏抽棴',
type : 'submit',
handler : function() {
win.close(this);
}
}]
})
var win = new Ext.Window({
title : "涓婁紶鍥劇墖",
id : 'picwin',
width : 400,
height : 120,
modal : true,
border : false,
iconCls:'icon-uploadpic',
layout : "fit",
items : imgform
});
win.show();
},//涓婁紶鍥劇墖鐨勬墿灞?br />
addFile : function() {
var editor = this;
var fileform = new Ext.FormPanel({
region : 'center',
labelWidth : 55,
frame : true,
bodyStyle : 'padding:5px 5px 0',
autoScroll : true,
border : false,
fileUpload : true,
items : [{
xtype : 'textfield',
fieldLabel : '閫夋嫨鏂囦歡',
name : 'userfile_F',
id : 'userfile_F',
inputType : 'file',
allowBlank : false,
blankText : '鏂囦歡涓嶈兘涓虹┖',
height : 25,
anchor : '98%'
}],
buttons : [{
text : '涓婁紶',
type : 'submit',
handler : function() {
var furl="";//鏂囦歡鐗╃悊鍦板潃
var fname="";//鏂囦歡鍚嶇О
furl=fileform.form.findField('userfile_F').getValue();
var type=furl.substring(furl.length-3).toLowerCase();
if (furl==""||furl==null) {return;}
if(type!='doc'&&type!='xls'){
alert('浠呮敮鎸佷笂浼燿oc銆亁ls鏍煎紡鐨勬枃浠?');
return;
}
fname=furl.substring(furl.lastIndexOf("\\")+1);
fileform.form.submit({
url : '/newsinfo.mvc/AddFiles_newsinfo',
waitMsg : '姝e湪涓婁紶......',
waitTitle : '璇風瓑寰?,
method : 'POST',
success : function() {
var element = document.createElement("a");
element.href = "../UploadFile/"+fname;
element.target = '_blank';
element.innerHTML = fname;
if (Ext.isIE) {
editor.insertAtCursor(element.outerHTML);
} else {
var selection = editor.win.getSelection();
if (!selection.isCollapsed) {
selection.deleteFromDocument();
}
selection.getRangeAt(0).insertNode(element);
}
winFile.close();
},
failure : function() {
form.reset();
if (action.failureType == Ext.form.Action.SERVER_INVALID)
Ext.MessageBox.alert('璀﹀憡',
'涓婁紶澶辮觸錛屼粎鏀寔涓婁紶doc銆亁ls鏍煎紡鐨勬枃浠?');
}
});
}
}, {
text : '鍏抽棴',
type : 'submit',
handler : function() {
winFile.close(this);
}
}]
})
var winFile = new Ext.Window({
title : "涓婁紶闄勪歡",
id : 'picwin',
width : 400,
height : 120,
modal : true,
border : false,
layout : "fit",
iconCls : 'icon-uploadfile',
items : fileform
});
winFile.show();
},//涓婁紶闄勪歡鐨勬墿灞?br />
addflash : function() {
var editor = this;
var flashform = new Ext.FormPanel({
region : 'center',
labelWidth : 55,
frame : true,
bodyStyle : 'padding:5px 5px 0',
autoScroll : true,
border : false,
items : [{
xtype : 'textfield',
fieldLabel : 'flash鍦板潃',
name : 'userflash',
id : 'userflash',
allowBlank : false,
blankText : 'http://',
emptyText : 'http://',
height : 25,
anchor : '98%'
}],
buttons : [{
text : '娣誨姞',
type : 'submit',
handler : function() {
var furl="";//鏂囦歡鐗╃悊鍦板潃
furl=flashform.form.findField('userflash').getValue();
var type=furl.substring(furl.length-3).toLowerCase();
if (furl==""||furl==null) {return;}
if(type!='swf'&&type!='flv'){
alert('闈炴硶鏍煎紡錛岃媯鏌ワ紒');
return;
}
var element = document.createElement("embed");
element.src = furl;
element.type="application/x-shockwave-flash";
element.quality="high";
element.style.width="300px";
element.style.height="200px";
if(Ext.isIE) {
editor.insertAtCursor(element.outerHTML);
} else {
var selection = editor.win.getSelection();
if (!selection.isCollapsed) {
selection.deleteFromDocument();
}
selection.getRangeAt(0).insertNode(element);
}
winflash.close();
}
}, {
text : '鍏抽棴',
type : 'submit',
handler : function() {
winflash.close(this);
}
}]
})
var winflash = new Ext.Window({
title : "鎻掑叆flash",
id : 'flashwin',
width : 400,
height : 120,
modal : true,
border : false,
layout : "fit",
iconCls : 'icon-swf',
items : flashform
});
winflash.show();
},//鎻掑叆flash鐨勬墿灞?br />
addfilm : function() {
var editor = this;
var filmform = new Ext.FormPanel({
region : 'center',
labelWidth : 70,
frame : true,
bodyStyle : 'padding:5px 5px 0',
autoScroll : true,
border : false,
items : [{
xtype : 'textfield',
fieldLabel : '澶氬獟浣撳湴鍧',
name : 'userfilm',
id : 'userfilm',
allowBlank : false,
blankText : 'http://',
emptyText : 'http://',
height : 25,
anchor : '98%'
}],
buttons : [{
text : '娣誨姞',
type : 'submit',
handler : function() {
var furl="";//鏂囦歡鐗╃悊鍦板潃
var regImg = new RegExp(/\.(mp3|wav|wma|wmv|avi|mpg|asf|rm|rmvb)$/);
var regrm=new RegExp(/\.(rm|rmvb)$/);
furl=filmform.form.findField('userfilm').getValue();
//var type=furl.substring(furl.length-3).toLowerCase();
if (furl==""||furl==null) {return;}
if(!furl.match(regImg)){
alert('闈炴硶鏍煎紡錛岃媯鏌ワ紒緋葷粺鏀寔錛歮p3,wav,wma,wmv,avi,mpg,asf,rm,rmvb');
return;
}
var element = document.createElement("embed");
element.src = furl;
element.style.width="300px";
element.style.height="200px";
if(furl.match(regrm))
element.type="audio/x-pn-realaudio-plugin";
else
element.type="video/x-ms-asf-plugin";
element.loop="true";
element.autostart="true";
if(Ext.isIE) {
editor.insertAtCursor(element.outerHTML);
} else {
var selection = editor.win.getSelection();
if (!selection.isCollapsed) {
selection.deleteFromDocument();
}
selection.getRangeAt(0).insertNode(element);
}
winfilm.close();
}
}, {
text : '鍏抽棴',
type : 'submit',
handler : function() {
winfilm.close(this);
}
}]
})
var winfilm = new Ext.Window({
title : "鎻掑叆澶氬獟浣?,
id : 'filmwin',
width : 410,
height : 120,
modal : true,
border : false,
layout : "fit",
iconCls : 'icon-film',
items : filmform
});
winfilm.show();
},//鎻掑叆榪囧獟浣撶殑鎵╁睍
createToolbar : function(editor) {
HTMLEditor.superclass.createToolbar.call(this, editor);
this.tb.insertButton(16, {
cls : "x-btn-icon",
iconCls : "icon-uploadpic",
handler : this.addImage,
tooltip : "娣誨姞鍥劇墖",
scope : this
});
this.tb.insertButton(17, {
cls : "x-btn-icon",
iconCls : 'icon-uploadfile',
handler : this.addFile,
tooltip : "娣誨姞鏂囦歡",
scope : this
});
this.tb.insertButton(18, {
cls : "x-btn-icon",
iconCls : 'icon-swf',
handler : this.addflash,
tooltip : "娣誨姞flash鏂囦歡",
scope : this
});
this.tb.insertButton(19, {
cls : "x-btn-icon",
iconCls : 'icon-film',
handler : this.addfilm,
tooltip : "娣誨姞澶氬獟浣撴枃浠?,
scope : this
});
this.tb.insertButton(20, {//鎻掑叆灞傜殑鎵╁睍錛屽嵆鎻掑叆div
cls : "x-btn-icon",
iconCls : 'icon-div',
handler : function() {
var element = document.createElement("div");
element.id="InsertDiv";
element.style.backgroundColor="#FAFAFB";
element.style.borderWidth="1px";
element.style.borderStyle="solid";
element.style.borderColor="#AECBE7";
element.innerHTML="鍦ㄦ鎻掑叆鍐呭錛?lt;BR>";
if(Ext.isIE) {
editor.insertAtCursor(element.outerHTML);
} else {
var selection = editor.win.getSelection();
if (!selection.isCollapsed) {
selection.deleteFromDocument();
}
selection.getRangeAt(0).insertNode(element);
}
},
tooltip : "娣誨姞div灞?,
scope : this
});
this.tb.insertButton(21, { //鎻掑叆妯嚎鐨勬墿灞?br />
cls : "x-btn-icon",
iconCls : 'icon-hr',
handler :function() {
var element = document.createElement("HR");
if(Ext.isIE) {
editor.insertAtCursor(element.outerHTML);
} else {
var selection = editor.win.getSelection();
if (!selection.isCollapsed) {
selection.deleteFromDocument();
}
selection.getRangeAt(0).insertNode(element);
}
},
tooltip : "娣誨姞妯嚎",
scope : this
});
}
});
Ext.reg('CJ_starthtmleditor', HTMLEditor);
澶у鍙互鏍規嵁榪欎釜鏂規硶緇х畫鎵╁睍鑷繁鎯寵鐨勪笢瑗褲?/p>
涓婇潰涓婁紶鍥劇墖鍜岄檮浠舵湁涓涓柟娉曪紝鍐呭濡備笅錛?/p>
//涓婁紶鏂囦歡
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult AddFiles_newsinfo(FormCollection collection)
{
var rdto = new ResultDTO();
var c = Request.Files[0];
if (c != null && c.ContentLength > 0)
{
string filename = c.FileName;
string destination = Server.MapPath("/UploadFile/");
c.SaveAs(destination+ filename);
}
return null;
}
浣跨敤鐨勬椂鍊欙紝棣栧厛鍦ㄩ〉闈腑娣誨姞璇s鐨勫紩鐢紝鐒跺悗錛屽湪闇瑕佺殑鍦版柟鍔犲叆浠ヤ笅浠g爜錛?/p>
{
border : false,
columnWidth : 1,
layout : 'form',
items : [{
fieldLabel : '淇℃伅鍐呭',
xtype : 'CJ_starthtmleditor',
name : 'nr',
id : 'nr',
allowBlank : false,
anchor : '98%'
}]
}
杞澆鍦板潃錛?a >http://hi.baidu.com/jackvoilet/blog/item/38551a3dc709d40cbba16717.html
doLoad:function(C){
var B={},
A=this.paramNames;
B[A.start]=C;
B[A.limit]=this.pageSize;
B['name']=Ext.getCmp("queryNam").getValue();
B['isUse']=Ext.getCmp("queryIsUse").getValue();
B['cpcod']=Ext.getCmp("queryfndcc").getValue();
if(this.fireEvent("beforechange",this,B)!==false){
this.store.load({params:B})
}
}
1.formPanel涓婄殑鎺т歡鏄劇ず涓嶅嚭鏉ワ紝鎺т歡鐨勫搴﹀お澶э紝formpanel鐨勫搴︾浉瀵瑰お灝忓鑷淬?/p>
2.涓篎ormPanel璁懼畾浜哾efaultType灞炴э紝娌℃湁涓烘瘡涓帶浠跺崟鐙埗瀹歺type灞炴с傛紜殑鍋氭硶鏄笉璁劇疆defaultType銆?/p>
3.鍦ㄦ瘡涓猚olumn閲屽啀鍔犱笂form layout錛屽啀鍦╢orm閲屽姞textfield銆?/p>
4.鍦ㄦ柊寤篢abPanel鏃訛紝灝嗗叾灞炴ayoutOnTabChange璁劇疆涓簍rue鍗沖彲銆傦紙姝ゆ柟娉曚笉閫氱敤錛?/p>
grid.addListener('rowdblclick', rowdblclickFn);
Ext2.0鏄竴涓猨avascript妗嗘灦錛屽畠鐨凣rid鎺т歡鍜屽叾瀹冨彲浠ユ樉紺烘暟鎹殑鎺т歡錛岃兘澶熸敮鎸佸縐嶆暟鎹被鍨嬶紝濡備簩緇存暟緇勩丣son鏁版嵁鍜孹ML鏁版嵁錛岀敋鑷沖寘鎷垜浠嚜瀹氫箟鐨勬暟鎹被鍨嬨侲xt涓烘垜浠彁渚涗簡涓涓ˉ姊丒xt.data.Store錛岄氳繃瀹冩垜浠彲浠ユ妸浠諱綍鏍煎紡鐨勬暟鎹漿鍖栨垚grid鍙互浣跨敤鐨勫艦寮忥紝榪欐牱灝變笉闇瑕佷負姣忕鏁版嵁鏍煎紡鍐欎竴涓猤rid鐨勫疄鐜頒簡銆?/p>
棣栧厛錛屼竴涓〃鏍煎簲璇ユ湁鍒楀畾涔夛紝鍗沖畾涔夎〃澶碈olumnModel錛?br />
// 瀹氫箟涓涓狢olumnModel錛岃〃澶翠腑鏈夊洓鍒?br />
var cm = new Ext.grid.ColumnModel([
{header:'緙栧彿',dataIndex:'id'},
{header:'鎬у埆',dataIndex:'sex'},
{header:'鍚嶇О',dataIndex:'name'},
{header:'鎻忚堪',dataIndex:'descn'}
]);
cm.defaultSortable = true;
璇olumnModel瀹氫箟浜嗚〃鏍肩殑鍥涗釜鍒楋紝鍏舵瘡鍒楃殑鍚嶇О鍜屽搴旂殑鏁版嵁閿傝娉ㄦ剰defaultSortable灞炴э紝鍗充負姣忎釜鍒楅兘瀹変笂涓涓彲浠ユ帓搴忕殑鍔熻兘銆傚鏋滃彧鎯蟲煇浜涘垪涓炬湁璇ュ姛鑳斤紝鍙互璁劇疆錛?br />
{header:'緙栧彿',dataIndex:'id',Sortable:true},
鐜板湪灝辨潵鐪嬬湅榪欎釜Ext.data.Store鏄浣曡漿鎹笁縐嶆暟鎹殑銆?/p>
1.浜岀淮鏁扮粍錛?br />
// ArrayData
var data = [
['1','male','name1','descn1'],
['2','male','name1','descn2'],
['3','male','name3','descn3'],
['4','male','name4','descn4'],
['5','male','name5','descn5']
];
// ArrayReader
var ds = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.ArrayReader({}, [
{name: 'id',mapping: 0},
{name: 'sex',mapping: 1},
{name: 'name',mapping: 2},
{name: 'descn',mapping: 3}
])
});
ds.load();
ds瑕佸搴斾袱涓儴鍒嗭細proxy鍜宺eader銆俻roxy鍛婅瘔鎴戜滑浠庡摢閲岃幏寰楁暟鎹紝reader鍛婅瘔鎴戜滑濡備綍瑙f瀽榪欎釜鏁版嵁銆?br />
鐜板湪鐢ㄧ殑鏄疎xt.data.MemoryProxy錛屽畠灝嗗唴瀛樹腑鐨勬暟鎹甦ata浣滀負鍙傛暟浼犻掋侲xt.data.ArrayReader涓撻棬鐢ㄦ潵瑙f瀽鏁扮粍錛屽茍涓斿憡璇夋垜浠畠浼氭寜鐓у畾涔夌殑瑙勮寖榪涜瑙f瀽錛屾瘡琛屾寜欏哄簭璇誨彇鍥涗釜鏁版嵁錛岀涓涓彨id錛岀浜屼釜鍙玸ex錛岀涓変釜鍙玭ame錛岀鍥涗釜descn銆傝繖浜涙槸璺?cm瀹氫箟涓殑dataIndex瀵瑰簲鐨勩傝繖鏍穋m灝辯煡閬撳摢鍒楀簲璇ユ樉紺洪偅鏉℃暟鎹簡銆?br />
mapping灞炴х敤浜庢爣璁癲ata涓殑璇誨彇鍚庣殑鏁版嵁涓庢爣澶寸殑鏄犲皠鍏崇郴錛屼竴鑸槸涓嶇敤璁劇疆鐨勩備絾濡傛灉鎴戜滑鎯寵sex鐨勬暟鎹腑name鏍忎腑鍑虹幇錛屽彲浠ヨ緗甿apping鍊箋傚嵆id鐨刴apping涓?,鍚庤呬負0銆?br />
璁板緱瑕佹墽琛屼竴嬈s.load()錛屽鏁版嵁榪涜鍒濆鍖栥?/p>
鏁版嵁鐨勬樉紺烘樉寰楅潪甯哥畝鍗曪細
HTML鏂囦歡錛?br />
<div id='grid'></div>
JS鏂囦歡錛?br />
var grid = new Ext.grid.GridPanel({
el: 'grid',
ds: ds,
cm: cm
});
grid.render();
鍏舵樉紺虹粨鏋滀負錛?/p>
2.濡備綍鍦ㄨ〃鏍間腑娣誨姞CheckBox鍛紵
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),//鑷姩琛屽彿
sm,//娣誨姞鐨勫湴鏂?br />
{header:'緙栧彿',dataIndex:'id'},
{header:'鎬у埆',dataIndex:'sex'},
{header:'鍚嶇О',dataIndex:'name'},
{header:'鎻忚堪',dataIndex:'descn'}
]);
var grid = new Ext.grid.GridPanel({
el: 'grid3',
ds: ds,
cm: cm,
sm: sm,//娣誨姞鐨勫湴鏂?br />
title: 'HelloWorld'
});
3. 濡備綍鍋欸rid涓婅Е鍙戜簨浠跺憿錛?br />
涓嬮潰鏄竴涓猚ellclick浜嬩歡
grid.addListener('cellclick', cellclick);
function cellclick(grid, rowIndex, columnIndex, e) {
var record = grid.getStore().getAt(rowIndex); //Get the Record
var fieldName = grid.getColumnModel().getDataIndex(columnIndex); //Get field name
var data = record.get(fieldName);
Ext.MessageBox.alert('show','褰撳墠閫変腑鐨勬暟鎹槸'+data);
}
4.濡備綍鍋欸rid涓仛鍑哄揩鎹瘋彍鍗曟晥鏋滐細
grid.addListener('rowcontextmenu', rightClickFn);//鍙抽敭鑿滃崟浠g爜鍏抽敭閮ㄥ垎
var rightClick = new Ext.menu.Menu({
id:'rightClickCont', //鍦℉TML鏂囦歡涓繀欏繪湁涓猺ightClickCont鐨凞IV鍏冪礌
items: [
{
id: 'rMenu1',
handler: rMenu1Fn,//鐐瑰嚮鍚庤Е鍙戠殑浜嬩歡
text: '鍙抽敭鑿滃崟1'
},
{
//id: 'rMenu2',
//handler: rMenu2Fn,
text: '鍙抽敭鑿滃崟2'
}
]
});
function rightClickFn(grid,rowindex,e){
e.preventDefault();
rightClick.showAt(e.getXY());
}
function rMenu1Fn(){
Ext.MessageBox.alert('right','rightClick');
}
鍏禛rid濡備笅錛?/p>
5.濡備綍灝嗕竴鍒椾腑鐨勬暟鎹牴鎹姹傝繘琛屾敼鍙樺憿錛?br />
姣斿璇存у埆瀛楁鏍規嵁鍏秏ale鎴杅emale鏀瑰彉鏄劇ず鐨勯鑹詫紝榪欑ColumnMode涓璁★細
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
sm,
{header:'緙栧彿',dataIndex:'id'},
{header:'鎬у埆',dataIndex:'sex',renderer:changeSex},
{header:'鍚嶇О',dataIndex:'name'},
{header:'鎻忚堪',dataIndex:'descn'}
]);
cm.defaultSortable = true;
function changeSex(value){
if (value == 'male') {
return "<span style='color:red;font-weight:bold;'>綰㈢敺</span>";
} else {
return "<span style='color:green;font-weight:bold;'>緇垮コ</span>";
}
}
鍏跺畠涓ょ鏁版嵁鐨凣rid鏄劇ず鏄浉鍚岀殑錛屽叾涓嶅悓涔嬪鍦ㄤ簬鏁版嵁鑾峰彇鐨勮繃紼嬶細
6.Json鏁版嵁
鑷充簬榪欑鏁版嵁鐨勭被鍨嬭澶у鑷繁鐪婣jax鐨勪功綾嶏細
//JsonData
var data = {
'coders': [
{ 'id': '1', 'sex': 'male', 'name':'McLaughlin', 'descn': 'brett@newInstance.com' },
{ 'id': '2', 'sex': 'male','name':'Hunter', 'descn': 'jason@servlets.com' },
{ 'id': '3', 'sex': 'female','name':'Harold', 'descn': 'elharo@macfaq.com' },
{ 'id': '4', 'sex': 'male','name':'Harolds', 'descn': 'elhaross@macfaq.com' }
],
'musicians': [
{ 'id': '1', 'name': 'Clapton', 'descn': 'guitar' },
{ 'id': '2', 'name': 'Rachmaninoff', 'descn': 'piano' }
]
}
//ds浣跨敤鐨凪emoryProxy瀵硅薄鍜孞sonReader瀵硅薄
var ds = new Ext.data.Store({
proxy: new Ext.data.MemoryProxy(data),
reader: new Ext.data.JsonReader({root: 'coders'}, [
{name: 'id'},
{name: 'sex'},
{name: 'name'},
{name: 'descn'}
])
});
ds.load();
var grid = new Ext.grid.GridPanel({
el: 'grid3',
ds: ds,
cm: cm,
sm: sm,
title: 'HelloWorld',
autoHeight: true//涓瀹氳鍐欙紝鍚﹀垯鏄劇ず鐨勬暟鎹細灝戜竴琛?br />
});
grid.render();
7.浣跨敤XML鏁版嵁錛?br />
娉ㄦ剰錛岃鍙朮ML鏁版嵁蹇呴』鍦ㄦ湇鍔″櫒涓婅繘琛屻?br />
XML鏁版嵁test.xml鐨勫唴瀹癸細
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<results>2</results>
<item>
<id>1</id>
<sex>male</sex>
<name>Taylor</name>
<descn>Coder</descn>
</item>
</dataset>var ds3 = new Ext.data.Store({
url: 'test.xml', //XML鏁版嵁
reader: new Ext.data.XmlReader({record: 'item'}, [ //浣跨敤XmlReader瀵硅薄
{name: 'id'},
{name: 'sex'},
{name: 'name'},
{name: 'descn'}
])
});
8.浠庢湇鍔″櫒鑾峰彇鏁版嵁鍜屾暟鎹炕欏墊帶浠?br />
浠庝竴涓湇鍔″櫒鏂囦歡錛屽ASP銆丣SP鎴朣ervlet涓幏寰楁暟鎹簩緇碅rray銆丣SON鎴朮ML鏁版嵁錛屼篃鍙互琚獷xt璇誨彇錛屽茍琚獹rid鏄劇ず錛?br />
鏈嶅姟鍣ㄦ枃浠禿ata.asp:
<%
start = cint(request("start"))
limit = cint(request("limit"))
dim json
json=cstr("{totalProperty:100,root:[")
for i = start to limit + start-1
json =json + cstr("{'id':'") +cstr(i) + cstr("','name':'name") + cstr(i) + cstr("','descn':'descn") + cstr(i) + cstr("'}")
if i <> limit + start - 1 then
json =json + ","
end if
next
json = json +"]}"
response.write(json)
%>
鎴戜滑鍙互鐪嬪埌錛岃繖涓〉闈細鏍規嵁浼犲叆鐨剆tart鍜宭imit鐨勪笉鍚岋紝榪斿洖涓嶅悓鐨勬暟鎹紝鍏跺疄璐ㄦ槸涓垎欏電殑浠g爜銆備笅闈㈡槸start=0,limit=10鐨凧SON鏁版嵁錛?br /> {totalProperty:100,root:[{'id':'0','name':'name0','descn':'descn0'},{'id':'1','name':'name1','descn':'descn1'},{'id':'2','name':'name2','descn':'descn2'},{'id':'3','name':'name3','descn':'descn3'},{'id':'4','name':'name4','descn':'descn4'},{'id':'5','name':'name5','descn':'descn5'},{'id':'6','name':'name6','descn':'descn6'},{'id':'7','name':'name7','descn':'descn7'},{'id':'8','name':'name8','descn':'descn8'},{'id':'9','name':'name9','descn':'descn9'}]}
鎴戜滑浣跨敤鍒嗛〉鎺т歡鏉ユ帶鍒禛rid鐨勬暟鎹細
Ext.onReady(function(){
var sm = new Ext.grid.CheckboxSelectionModel();
var cm = new Ext.grid.ColumnModel([
new Ext.grid.RowNumberer(),
sm,
{header:'緙栧彿',dataIndex:'id'},
{header:'鎬у埆',dataIndex:'sex'},
{header:'鍚嶇О',dataIndex:'name'},
{header:'鎻忚堪',dataIndex:'descn'}
]);
cm.defaultSortable = true;
var ds = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'data.asp'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'root'
}, [
{name: 'id'},
{name: 'name'},
{name: 'descn'}
])
});
ds.load({params:{start:0,limit:10}});
var grid = new Ext.grid.GridPanel({
el: 'grid3',
ds: ds,
cm: cm,
sm: sm,
title: 'ASP->JSON',
bbar: new Ext.PagingToolbar({
pageSize: 10,
store: ds,
displayInfo: true,
displayMsg: '鏄劇ず絎?{0} 鏉″埌 {1} 鏉¤褰曪紝涓鍏?{2} 鏉?,
emptyMsg: "娌℃湁璁板綍"
}),
tbar: new Ext.PagingToolbar({
pageSize: 10,
store: ds,
displayInfo: true,
displayMsg: '鏄劇ず絎?{0} 鏉″埌 {1} 鏉¤褰曪紝涓鍏?{2} 鏉?,
emptyMsg: "娌℃湁璁板綍"
})
});
grid.render();
})
10.濡備綍鍦℅rid鐨勪笂鏂規坊鍔犳寜閽憿錛?br />
娣誨姞鎸夐挳鐨勫叧閿箣澶勫湪浜巘bar鎴朾bar灞炴ц緗甌oolbar宸ュ叿鏉★細
var grid = new Ext.grid.GridPanel({
el: 'grid3',
ds: ds,
cm: cm,
sm: sm,
title: 'HelloWorld',
tbar: new Ext.Toolbar({
items:[
{
id:'buttonA'
,text:"Button A"
,handler: function(){ alert("You clicked Button A"); }
}
,
new Ext.Toolbar.SplitButton({})
,{
id:'buttonB'
,text:"Button B"
,handler: function(){ alert("You clicked Button B"); }
}
,
'-'
,{
id:'buttonc'
,text:"Button c"
}
]
})
});
11.灝咷ridPanel鏀懼叆涓涓狿anel鎴朤abPanel涓?br />
var tabs = new Ext.TabPanel({
collapsible: true
,renderTo: 'product-exceptions'
,width: 450
,height:400
,activeTab: 0
,items:[
{
title: 'Unmatched'
},{
title: 'Matched'
}
]
});
tabs.doLayout();
var panel = new Ext.Panel({
renderTo: 'panel',
title:'panel',
collapsible:true,
width:450,
height:400,
items:[grid] //綆$悊grid
});
Panel蹇呴』鏈塂IV瀛樺湪銆傚叾鍖呭惈鐨凜omponent鏈塱tems綆$悊銆?/p>
鏈枃鏄湪瀛︿範Ext2.0鐨勫熀紜涓婂啓鐨勶紝鍥犳錛屽弬鑰冧簡璁稿緗戜笂瀛樺湪鐨凚log鏂囩珷銆傚湪姝よ〃紺鴻嚧鏁紒
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/boy00fly/archive/2009/03/20/4008317.aspx
浣跨敤瀹氫箟鏍峰紡
.ext-ie7 .x-menu-item-icon,
.ext-ie6 .x-menu-item-icon {left: -24px;}
.ext-ie8 .x-menu-item-icon,
.ext-ie7 .x-menu-item-icon,
.ext-ie6 .x-menu-item-icon {left: -24px;}
瑙e喅
浣跨敤grid鐨勯伄緗╂彁紺烘椂錛屼竴瀹氳璁捐〃鏍肩殑height鍜寃idth銆?/p>
enableColumnMove鍜宔nableColumnResize涓篺alse琛ㄧず紱佺敤鎷栨斁鍒楀拰鏀瑰彉鍒楀搴﹀姛鑳姐?br />
榛樿鎯呭喌涓嬩竴嬈″彲浠ラ変竴琛屾垨澶氳銆?/p>
stripeRows:true鏄劇ず涓烘枒椹嚎銆?/p>
闂錛氳嚜涓誨喅瀹氭瘡鍒楃殑瀹藉害
1.鎵嬪姩鎸囧畾
cm(columnmudule)鏀寔緇欐瘡鍒楄緗搴?濡傛灉涓嶆寚瀹氬垯榛樿鐨勫搴︿負100px.
var cm=new Ext.grid.columnModel({
{header:'鍒楀ご',dataIndex:'鏁版嵁婧愮儲',width:瀹藉害},....});
2.鑷姩濉厖
var gird=new Ext.grid.GridPanel({
renderTo:'grid',
store:store,
cm:cm,
viewConfig:{forceFit:true}});
浼氭寜鐓ц緗殑瀹藉害涔嬮棿鐨勬瘮渚嬭繘琛屾樉紺猴紝鑰屼笉鏄寜鐓ц緗殑瀹藉害銆?/p>
3.鎸囧畾鑷姩濉厖鍓╀綑絀洪棿鐨勫垪
涔熷彲浠ユ寚瀹氫竴鍒楁潵瀹屾垚璇ユ搷浣滐紝浣嗚鎿嶄綔瑕佹眰璇ュ垪蹇呴』瀹氫箟鏃舵寚瀹歩d鍊箋?br />
var cm=new Ext.grid.columnModel({
{header:'鍒楀ご',dataIndex:'鏁版嵁婧愮儲',width:瀹藉害,id:'id鏍囪瘑灞炴?},....});
鎺ヤ笅鏉ヨ瀹?br />
Ext.grid.GridPanel({
renderTo:'grid',
store:store,
cm:cm,
autoExpandColumn:'id鍒楁爣璇?});
闂錛氳鍒楁敮鎸佹帓搴?br />
鍦ㄥ緩绔嬪垪妯″瀷鏃舵寚瀹歴torable:true
闂錛氫腑鏂囨帓搴?br /> 1.涓篍xt.data.Store璁劇疆涓涓猻toreInfo:{field:'鍒楀悕',direction:'ASC|DESC'}灞炴с?/p>
2.閲嶅啓Ext.data.Store鐨刟pplySort鍑芥暟
Ext.data.Store.prototype.applySort = function() {
if (this.sortInfo && !this.remoteSort) {
var s = this.sortInfo, f = s.field;
var st = this.fields.get(f).sortType;
var fn = function(r1, r2) {
var v1 = st(r1.data[f]), v2 = st(r2.data[f]);
if (typeof(v1) == "string") {
return v1.localeCompare(v2);
}
return v1 > v2 ? 1 : (v1 < v2 ? -1 : 0);
};
this.data.sort(s.direction, fn);
if(this.snapshot && this.snapshot != this.data) {
this.snapshot.sort(s.direction, fn);
}
}
};
璇ュ嚱鏁板彲浠ュ姞鍦╡xt-all.js鏂囦歡鐨勬湭灝俱傛垨鑰呮斁鍦╤tml欏甸潰鐨勬渶涓婇潰錛屼繚璇佸湪EXT鍒濆鍖栦箣鍚庯紝瀹為檯浠g爜璋冪敤涔嬪墠鎵ц銆?/p>
闂錛氭樉紺烘棩鏈熺被鍨嬫暟鎹垪
1.鍦╯tore鐨剅eader灞炴т腑澧炲姞type鍜宒ataFormat涓や釜灞炴?br />
{name: 'date',type:'date',dateFormat:'Y-j-n H:i:s'}
娉ㄦ剰鏍煎紡鍖栧瓧絎︿覆蹇呴』瑕佷笌瀹為檯鏃ユ湡鐨勫唴瀹圭浉瀵瑰簲銆?br />
濡傛棩鏈熶負2009-5-2 12:30:58 鍒欐牸寮忓寲瀛楃涓蹭負'Y-j-n H:i:s'
濡傛棩鏈熶負2009-05-02 12:30:58 鍒欐牸寮忓寲瀛楃涓蹭負'Y-m-d H:i:s'
璇︾粏瀛楃涓茬殑鍚箟瑙乪xt api doc涔婦ate綾?br />
浠ヤ繚璇佽兘澶熻鍙栧埌姝g‘鐨勬棩鏈熷箋?/p>
2.鍦–olumnModel涓柊鍔犻厤緗?br />
{header: '鏃ユ湡',dataIndex: 'date',type:'date',renderer:Ext.util.Format.dateRenderer('Y騫磈鏈坣鏃?)}
鍏朵腑renderer鐨勬牸寮忓瓧絎︿覆琛ㄧず鏄劇ず鐨勬牸寮忔槸浠涔堛?/p>
闂錛氬浣曞湪鍗曞厓鏍兼椂鏄劇ず綰㈣壊鐨勫瓧鎴栧浘鐗囷紝鎸夐挳絳?br />
鍦–olumnModule鐨勭浉搴斿垪鐨勫睘鎬т腑娣誨姞renderer:娓叉煋鍑芥暟
濡?
var cm=new Ext.grid.ColumnModel([
{head:'鍒楀ご',dataIndex:'鏁版嵁婧愮儲',renderer:娓叉煋鍑芥暟}]);
娓叉煋鍑芥暟錛?br />
function 鍑芥暟鍚?value){
if(value==鍊鹼級锝?br />
return html+css浠g爜;
}
else
{
return 鍏跺畠鐨刪tml+css;
}
}
闂錛氬浣曡緗〃鏍肩殑琛ㄥご鍙抽敭鎻愮ず涓烘眽瀛楀唴瀹?/p>
Ext.grid.GridPanel鍙互鐪嬩綔鎺у埗鍣紝Ext.data.Store鍙互鐪嬩綔妯″瀷錛孍xt.grid.GridView鍙互鐪嬩綔瑙嗗浘.鍦ㄦ瀯寤篍xt.grid.GridPanel瀹炰緥鏃舵坊鍔爒iewConfig灞炴?br />
var gid=new Ext.grid.GridPanel(
{renderTo:'grid',
store:store,
cm:cm,
viewConfig:{
columnsText:'鏄劇ず鐨勫垪',
scrollOffset:30,
sortAscText:'鍗囧簭',
sortDescText:'闄嶅簭'
//forceFit:true
}
});
闂錛氱敤grid瀹炵幇鍒嗛〉鏄劇ず
錛?涓篏rid娣誨姞鍒嗛〉宸ュ叿鏉?br />
鍦℅ridPanel涓繘琛岃緗?/p>
var grid = new Ext.grid.GridPanel({
renderTo: 'grid',
autoHeight: true,
store: store,
cm: cm,
bbar: new Ext.PagingToolbar({
pageSize:3,
store: store,
displayInfo: true,
displayMsg: '鏄劇ず絎?{0} 鏉″埌 {1} 鏉¤褰曪紝涓鍏?{2} 鏉?,
emptyMsg: "娌℃湁璁板綍"
})
});
store.load();
鍦ㄤ嬌鐢ㄥ垎欏靛伐鍏鋒潯涔嬪悗錛宻tore.load()蹇呴』鍙戠敓鍦ㄦ瀯閫燝ridPanel涔嬪悗.鑰屼笖鏁版嵁婧愪笉鑳戒嬌鐢‥xt.data.SimpleStore.Grid姣忔閮戒細鏄劇ず鏁版嵁婧愪腑鎵鏈夌殑鏁版嵁.鍥犳鏁版嵁涓瀹氳鍏堝湪鍚庡彴鍒嗗ソ.
濡傛灉瑕佸湪Grid鐨勫ご閮ㄦ樉紺哄垎欏靛伐鍏鋒潯錛屽彲浠ュ皢bbar鏀逛負tbar銆?/p>
錛?鍚庡彴鍒嗛〉
鍚庡彴jsp鐨勫仛娉曪細
鈶犲彇寰楀紑濮嬮〉鍙蜂笌欏靛ぇ灝?/p>
String start = request.getParameter("start");
String limit = request.getParameter("limit");
鈶¤闂暟鎹簱鍙栧緱鏁版嵁
鈶㈠皢鏁版嵁杈撳嚭涓簀son瀛楃涓?/p>
鏍煎紡涓猴細{totalProperty:鎬昏褰曟暟,root:[锝?....锝濓紝锝?....锝濓紝....]),鍏朵腑root鏁扮粍瀛樻斁褰撳墠欏電殑鏁版嵁.
鍓嶅彴欏甸潰鐨勫仛娉曪細
鈶犱慨鏀筍tore
var store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:jsp鐨剈rl'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'root'
}, [
{name: 'id'},
{name: 'name'},
{name: 'descn'}
])
});
鈶″悜鏈嶅姟鍣ㄤ紶鍙?/p>
store.load({params:{start:0,limit:10}});
Grid姣忔閮戒細鏄劇ず鍏ㄩ儴鍦╮oot涓殑鏁版嵁錛岃屼笉璁簍otalProperty鐨勫兼槸澶氬皯錛屾墍浠ュ垎欏墊椂root鏁扮粍涓殑鏁版嵁鐢卞悗鍙癹sp鎺у埗銆?/p>
3.鍓嶅彴鍒嗛〉
EXT涓殑Grid鏄妸寰楀埌鐨勬暟鎹竴嬈℃ф樉紺哄湪琛ㄦ牸閲岋紝騫舵病鏈夌洿鎺ヤ負鎴戜滑鎻愪緵鍐呭瓨鍒嗛〉鐨勫姛鑳斤紝浣嗘槸鍦‥xt鐨別xamples/locale/PapingMemoryProxy.js錛屽畠鍙互浠庢湰鍦版暟鎹鍙栨暟鎹悓錛屽茍瀹炵幇鍐呭瓨鍒嗛〉銆?br />
姝ラ濡備笅錛?br />
鈶犲皢PagingMemoryProxy.js瀵煎叆html
鈶℃妸浠ュ墠鐨凪emroryProxy鎹㈡垚PagingMemoryProxy
鈶㈣皟鐢╯tore.load({params:{start:0,limit:3}});鏄劇ず鏈寮濮嬬殑3鏉¤褰曘?/p>
4.鍚庡彴鎺掑簭
鍦ㄩ粯璁ょ殑鎯呭喌涓嬶紝Grid鍙兘瀵瑰綋鍓嶉〉鐨勬暟鎹繘琛屾帓搴忥紝濡傛灉瀵規墍鏈夌殑鏁版嵁鎺掑簭錛屽垯闇瑕佸皢鎺掑簭淇℃伅鎻愪氦鍒板悗鍙幫紝鐢卞悗鍙板皢淇℃伅緇勮鍒癝QL閲岋紝鐒跺悗鍐嶇敱鍚庡彴灝嗗鐞嗗ソ鐨勬暟鎹繑鍥炵粰鍓嶅彴銆?br />
var store = new Ext.data.Store({
proxy: new Ext.data.HttpProxy({url:'09_01.jsp'}),
reader: new Ext.data.JsonReader({
totalProperty: 'totalProperty',
root: 'root'
}, [
{name: 'id'},
{name: 'name'},
{name: 'descn'}
]),
remoteSort: true
});
鍏朵腑remoteSort: true琛ㄧず鍏佽鍚庡彴鎺掑簭錛岃繖鏍峰湪鎺掑簭鏃跺氨浼氭湁鍙樺寲錛屼笉浼氱珛鍗蟲樉紺哄嚭鎺掑簭鐨勭粨鏋滐紝鑰屾槸鍚戝悗鍙版彁浜や袱涓弬鏁幫紝鍒嗗埆鏄痵ort鍜宒ir錛岃〃紺鴻鎺掑簭鐨勫瓧孌典笌鍗囧簭鎴栭檷搴忋?/p>
jsp鍒欒繘琛岀浉搴旂殑澶勭悊
String start = request.getParameter("start");
String limit = request.getParameter("limit");
String sort = request.getParameter("sort");
String dir = request.getParameter("dir");
鍐嶈繘琛屾暟鎹簱鍒嗛〉錛屽茍榪斿洖json鏍煎紡鐨勫垎欏墊暟鎹?/p>
鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛歨ttp://blog.csdn.net/hfy211/archive/2009/06/29/4306357.aspx