basically it's a Header subclass which renders a checkbox in each column cell which toggles the truthiness of the associated data field on click. In addition to toggling a Boolean value within the record data, this class adds or removes a css class 'x-grid-checked' on the td based on whether or not it is checked to alter the background image used for a column.
Add CheckHeader.css to the index.html file
<html> <head> <title>ExtJs checkcolumn Example </title> <link rel="stylesheet" type="text/css" href="extjs/resources/css/ext-all.css"> <link rel="stylesheet" type="text/css" href="extjs/ux/css/CheckHeader.css"> <script type="text/javascript" src="extjs/ext-all-debug.js"></script> <script type="text/javascript" src="app.js"></script> </head> <body></body> </html>
Changes to app.js
Ext.Loader.setPath('Ext.ux', 'extjs/ux'); Ext.Loader.setConfig({ enabled: true }); Ext.require([ 'Ext.data.*', 'Ext.grid.*', 'Ext.ux.CheckColumn' ]); Ext.application({ name: 'CHECKCOL', appFolder: 'app', controllers: [ 'Customers' ], launch: function() { Ext.create('Ext.container.Viewport', { items: [ { xtype: 'customerList', } ] }); } });
Define the model with the checkbox field
In this example the checkbox is the customer's status field. But the data stored in the backend is a character A=Active not boolean true or false. So we have to convert the field in the model definition as shown below
Ext.define('CHECKCOL.model.Customer', { extend: 'Ext.data.Model', fields: [ 'customerId', 'firstName', 'lastName', 'email', {name: 'active', type: 'bool', convert: function(v){ return (v === "A" || v === true) ? true : false; } }] });
In the end just define the Grid with status column xtype as checkcolumn
{ header: 'Active', dataIndex: 'active', flex: 1, xtype: 'checkcolumn', }
No comments:
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.