간단한 Grid 패키지
4918 단어 ext
Ext.namespace("Ext.ux.yiminghe")
Ext.ux.yiminghe.JsonGridPanel = function (config) {
var fieldsData = [];
for (var i = 0; i < config.columns.length; i++) {
fieldsData.push(config.columns[i].dataIndex);
}
//config.baseParams=config.baseParams||[];
//config.baseParams.limit=config.pageSize;
//config.baseParams.start=0;
config.store = new Ext.data.JsonStore({
url: config.dataSource, // url,
root: 'rows',
baseParams:config.baseParams,
totalProperty:'results', //
fields: fieldsData
});
config.store.lastOptions={params:{start:0,limit:config.pageSize}};
var columns = [new Ext.grid.RowNumberer()];
for (var i = 0; i < config.columns.length; i++) {
if (config.columns[i].show)
columns.push(config.columns[i]);
}
config.columns = columns;
Ext.ux.yiminghe.JsonGridPanel.addMenuScope(config.tbar, this);
config.store.on('loadexception', function(othis, options, response, e) {
if(response.responseText.trim() !='')
Ext.Msg.alert(' ', response.responseText);
else
Ext.Msg.alert(' ',' ');
return;
});
if (config.dynamicFunc)
config.store.on('beforeload', function(store_, options) {
config.dynamicFunc(options.params);
});
if (config.maskAll)
config.loadMask = new Ext.LoadMask(Ext.getBody(), {msg:" ..."});
else
config.loadMask = true;
config.bbar = new Ext.PagingToolbar({ // grid
pageSize:config.pageSize, //
store: config.store, // grid
displayInfo:true ,
items:config.pageBarItems,
plugins:config.pageBarPlugins
})//end bbar;
Ext.apply(this, config);
Ext.ux.yiminghe.JsonGridPanel.superclass.constructor.call(this,arguments);
if (this.doubleClick) {
this.on('rowdblclick', function(grid2, rowIndex, ee)
{
var store = grid2.getStore();
var oRecord = store.getAt(rowIndex);
this.doubleClick(oRecord);
ee.stopEvent();
}, this);
}
if (this.singleClick) {
this.on('rowclick', function(grid2, rowIndex, ee)
{
var store = grid2.getStore();
var oRecord = store.getAt(rowIndex);
this.singleClick(oRecord);
ee.stopEvent();
}, this);
}
if (this.rowcontextmenu) {
Ext.ux.yiminghe.JsonGridPanel.addMenuScope(this.rowcontextmenu, this);
this.on('rowcontextmenu', function(grid2, rowIndex, ee)
{
if (!this.rowcontextmenu_) {
this.rowcontextmenu_ = Ext.menu.MenuMgr.get({
id:'rowcontextmenu_-ctx',
items: this.rowcontextmenu
});
}
this.getSelectionModel().selectRow(rowIndex);
this.rowcontextmenu_.showAt(ee.getXY());
ee.preventDefault();
}, this);
}
}
Ext.extend(Ext.ux.yiminghe.JsonGridPanel, Ext.grid.GridPanel, {
getSelectionRecords:function() {
if (this.getSelectionModel().getSelections()[0])
return this.getSelectionModel().getSelections();
else {
alert(' !');
return false;
}
},
reload:function() {
this.getStore().reload();
}
,
getSelectionRecord:function() {
if (this.getSelectionModel().getSelections()[0])
return this.getSelectionModel().getSelections()[0];
else {
alert(' !');
return false;
}
}
});
Ext.ux.yiminghe.JsonGridPanel.addMenuScope = function (obj, sco) {
if (!obj) return;
if(obj.length)
for (var i = 0; i < obj.length; i++) {
if (!obj[i] || typeof obj[i] == 'string') continue;
obj[i]['scope'] = sco;
if (obj[i].menu)
yiminghe.dynamicTable.addMenuScope(obj[i].menu, sco);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ExtJS 3.2 학습 노트(3) 사용자 정의 이벤트Extjs에서 모든 상속은 Ext.util에서 합니다.Observable 클래스의 컨트롤은 이벤트를 지원할 수 있습니다. 클래스에 대해 이벤트를 사용자 정의하려면 다음 절차를 따르십시오. 1, 먼저 클래스를 정의합니...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.