Step 1: Application starting point index.html
<html>
<head>
<title>ExtJs Grid JSON Java Servlet example with Grid Filter </title>
<link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css">
<script type="text/javascript" src="extjs/ext-all-debug.js"></script>
<script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>
Step 2: Application JavaScript file app.js
Ext.Loader.setConfig({
enabled: true
});
Ext.application({
name: 'CN',
appFolder: 'app',
controllers: [
'Countries'
],
launch: function() {
Ext.create('Ext.container.Viewport', {
items: [
{
xtype: 'countrylist',
}
]
});
}
});
Step 3: JavaScript source file for country model Country.js
Ext.define('CN.model.Country', {
extend: 'Ext.data.Model',
fields: [
'code',
'name',
'continent',
'region',
'lifeExpectancy',
'gnp'
]
});
Step 4: JavaScript source file for country store Countries.js
Ext.define('CN.store.Countries', {
extend: 'Ext.data.Store',
model: 'CN.model.Country',
autoLoad: true,
proxy: {
type: 'ajax',
url: 'CountryServlet',
reader: {
type: 'json',
totalProperty: 'totalCount',
root: 'countries',
successProperty: 'success'
},
}
});
Step 5: JavaScript source file for country grid panel CountryList.js
Ext.define('CN.view.CountryList' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.countrylist',
title : 'List of Countries',
store : 'Countries',
loadMask: true,
height: 400,
width: 1000,
omitColumns: ['lifeExpectancy','gnp'],
dockedItems: [{
xtype: 'toolbar',
dock: 'bottom',
displayInfo: true,
items: [{
xtype : 'trigger',
itemId : 'gridTrigger',
fieldLabel: 'Filter Grid Data',
triggerCls : 'x-form-clear-trigger',
emptyText : 'Start typing to filter grid',
size : 30,
minChars : 1,
enableKeyEvents : true,
onTriggerClick : function(){
this.reset();
this.fireEvent('triggerClear');
}
}
]
}],
initComponent: function() {
this.columns = [
{header: 'Country Code', dataIndex: 'code', flex: 1},
{header: 'Name', dataIndex: 'name', flex: 1},
{header: 'Continent', dataIndex: 'continent', flex: 1},
{header: 'Region', dataIndex: 'region', flex: 1},
{header: 'Life Expectancy', dataIndex: 'lifeExpectancy', flex: 1},
{header: 'GNP', dataIndex: 'gnp', flex: 1}
];
this.callParent(arguments);
}
});
Step 6: JavaScript source file for the application controller Countries.js
Ext.define('CN.controller.Countries', {
extend : 'Ext.app.Controller',
//define the stores
stores : ['Countries'],
//define the models
models : ['Country'],
//define the views
views : ['CountryList'],
refs: [{
ref: 'myGrid',
selector: 'grid'
}],
init : function() {
this.control({
'viewport > panel' : {
render : this.onPanelRendered
},
'countrylist #gridTrigger' : {
keyup : this.onTriggerKeyUp,
triggerClear : this.onTriggerClear
}
});
},
onPanelRendered : function() {
//just a console log to show when the panel si rendered
console.log('The panel was rendered');
},
onTriggerKeyUp : function(t) {
console.log('You typed something!');
var thisRegEx = new RegExp(t.getValue(), "i");
var store = this.getCountriesStore();
var grid = this.getMyGrid();
store.filterBy(function(rec) {
for (var i = 0; i < grid.columns.length; i++) {
// Do not search the fields that are passed in as omit columns
if (grid.omitColumns) {
if (grid.omitColumns.indexOf(grid.columns[i].dataIndex) === -1) {
if (thisRegEx.test(rec.get(grid.columns[i].dataIndex))) {
if (!grid.filterHidden && grid.columns[i].isHidden()) {
continue;
} else {
return true;
};
};
};
} else {
if (thisRegEx.test(rec.get(grid.columns[i].dataIndex))) {
if (!grid.filterHidden && grid.columns[i].isHidden()) {
continue;
} else {
return true;
};
};
};
}
return false;
});
},
onTriggerClear : function() {
console.log('Trigger got reset!');
var store = this.getCountriesStore();
store.clearFilter();
}
});
Click here for next Chapter


1 comment:
can you give me the table
Post a Comment
NO JUNK, Please try to keep this clean and related to the topic at hand.
Comments are for users to ask questions, collaborate or improve on existing.