Why we need javascript Library? Javascript is an awesome language. It’s super flexible.Browsers are the modern UI paradigm.
The javascript Libraries now must provide a rich set of UI Widgets.
javascript libraries:
* JQuery
* Qooxdoo
* Dojo
* Prototype.js
* mootools
* extjs
Why did you choose Ext JS? The overall design of extjs is exemplary.One can learn a lot from it’s unified architecture – no matter which language one is programming in.
Extjs requires you to start with one of their base classes – ensuring a consitent model. Consistency is extremely important for the library to be reusable.
a.Extjs documentation seems to be very comprehensive and well maintained.
b.key aspect of the EXTJS Library is the cross-browser support.
c.Build rich Internet applications with Ext JS
d. Ext JS framework is the multitude of rich UI elements provided. These elements include forms, dialog boxes, tabs, trees, and grids.
e.The Ext JS framework includes support for Ajax implementations.
f.Ext JS integration with other Web server frameworks.
g.Ext JS framework development into several popular integrated development environments (IDEs), including Eclipse, Aptana, and Komodo.
h.Ext JS provides excellent performance.The framework is fully object oriented and extensible. Because it’s written in the JavaScript language
What are major Web browsers supported by Ext JS framework? * Windows® Internet Explorer® version 6 and later.
* Mozilla Firefox version 1.5 and later (PC and Macintosh).
* Apple Safari version 2 and later.
* Opera version 9 and later (PC and Mac).
Integration of Web development server-side frameworks with Ext JS? You can use Ext JS with other common Web development server-side frameworks, including PHP, the Java™ language, Microsoft® .NET, Ruby on Rails, and ColdFusion.
Where Extjs extended from ? Ext JS as a project to extend the functionality that the YUI Library.A key aspect of the YUI Library is the cross-browser support.The Extjs framework is fully object oriented and extensible. Because it’s written in the JavaScript language.
What is Extjs Ajax implementation? A typical Ext JS Ajax implementation: an HTML text field and button element that posts data in the text field to a Web server when the button is clicked.
Do you have any advice for developers using Ext for the first time? Ext can be used by Web Application developers who are familiar with HTML but may have little or no experience with JavaScript application development. If you are starting to build a new web application, or you are revamping an existing application, then take your time to understand the basics of the library including.
How to access Dom element using EXTJS? The Element API is fundamental to the entire Ext library.
Using traditional Javascript, selecting a DOM node by ID is done like this:
var myDiv = document.getElementById(‘myDiv’);
Using Extjs:
Ext.onReady(function() {
var myDiv = Ext.get(‘myDiv’);
what is the purpose of Element Object in Extjs? Element wraps most of the DOM methods and properties that you’ll need, providing a convenient, unified, cross-browser DOM interface (and you can still get direct access to the underlying DOM node when you need it via Element.dom)
->The Element.get() method provides internal caching, so multiple calls to retrieve the same object are incredibly fast
->The most common actions performed on DOM nodes are built into direct, cross-browser Element methods (add/remove CSS classes, add/remove event handlers, positioning, sizing, animation, drag/drop, etc.)
 what is use of Ext.onReady() function ? Ext.onReady is probably the first method that you’ll use on every page. This method is automatically called once the DOM is fully loaded, guaranteeing that any page elements that you may want to reference will be available when the script runs
Ext.onReady(function() {
alert(“Congratulations! You have Ext configured correctly!”);
For example, to show our message when any paragraph in our test page is clicked, what is the extjs code on paragraph click? Ext.onReady(function() {
Ext.select(‘p’).on(‘click’, function() {
alert(“You clicked a paragraph”);


Ext.onReady(function() {
var paragraphClicked = function() {
alert(“You clicked a paragraph”);
Ext.select(‘p’).on(‘click’, paragraphClicked);

List out the extjs library files to include in JSP page? ext-base.js
ext-all-debug.js or ext-all.js
base.css or examples.css
List out the css file required to apply Extjs Theme property? xtheme-gray.css
 what is purpose of MessageBox? MessageBox is asynchronous.
MessageBox call, which demonstrates the readable message to user.
MessageBox used for multiple purpose like
write syntax for MessageBox show() method? Ext.MessageBox.show({
title: ‘Paragraph Clicked’,
msg: ‘User clicked on Paragraph’,
buttons: Ext.MessageBox.OK,
animEl: paragraph
what is parent class for all stores in extjs? how many stores exists? Ext.data.Store is parent class for all stores.
A Store object uses its configured implementation of DataProxy to access a data object unless you call loadData directly and pass in your data.
subclasses for Store:
GroupingStore, JsonStore, SimpleStore
How to handle event for a extjs component? a. using listeners config object.
For ex for grid events : listeners: {rowclick: gridRowClickHandler,rowdblclick: gridRowDoubleClickHandler}
b. using addListener( String eventName, Function handler, [Object scope], [Object options] ) : void
Appends an event handler to this component
c. using on( String eventName, Function handler, [Object scope], [Object options] ) : void
Appends an event handler to this element (shorthand for addListener)
For ex: store.on( “datachanged”, function( store ){ ….. });
 How to find no of records in a store? using store.getCount() : Gets the number of cached records.
store.getTotalCount() : Gets the total number of records in the dataset as returned by the server.
How to handle exception while loading datastore? using loadexception event.
syntax: store.loadexception() : Fires if an exception occurs in the Proxy during loading.
use beforeload : ( Store this, Object options ) : Fires before a request is made for a new data object. If the beforeload handler returns false the load action will be canceled.
store.on(‘loadexception’, function(event, options, response, error) {
alert(“Handling the error”);
how to handle updates for store changes? use store.commitChanges()
what is the purpose of each() in store? Calls the specified function for each of the Records in the cache
each( Function fn, [records Object] )
how to get modified records using store object? store.getModifiedRecords() : Gets all records modified since the last commit.
what is the purpose of load() in store? store.load() : returns boolean
Loads the Record cache from the configured Proxy using the configured Reader.
For remote data sources, loading is asynchronous, and this call will return before the new data has been loaded.
store.load({callback: fnCheckData, scope: this});
what is purpose of loadData() in store? store.loadData( Object data, [Boolean append] ) : void
Loads data from a passed data block and fires the load event.
loadData(storeData,false); False to replace the existing records cache.
loadData(storeData,true) : True to append the new Records rather than replace the existing cache.
How many types of layout managers exist in extjs?what are they? Layouts fall under this package Ext.layout.*
Types of layouts:
Absolute Layout:
This is a simple layout style that allows you to position items within a container using CSS-style absolute positioning via XY coordinates.
Accordion Layout:
Displays one panel at a time in a stacked layout. No special config properties are required other than the layout.
All panels added to the container will be converted to accordion panels.
This type of layout is most commonly seen within FormPanels (or any container with a FormLayout) where fields are sized relative to the container without hard-coding their dimensions.
Border layouts can be nested with just about any level of complexity that you might need.
Every border layout must at least have a center region. All other regions are optional.
CardLayout (TabPanel):
The TabPanel component is an excellent example of a sophisticated card layout. Each tab is just a panel managed by the card layout such that only one is visible at a time
CardLayout (Wizard):
You can use a CardLayout to create your own custom wizard-style screen.
A very simple layout that simply fills the container with a single panel.
FormLayout has specific logic to deal with form fields, labels, etc.FormLayout in a standard panel,
This is a useful layout style when you need multiple columns that can have varying content height.Any fixed-width column widths are calculated first, then any percentage-width columns specified using the columnWidth config
Outputs a standard HTML table as the layout container.you want to allow the contents to flow naturally based on standard browser table layout rules.
How we can apply pagination in grid panel ? using Ext.PagingToolbar plugin, we can implement pagination to a grid panel
new Ext.PagingToolbar({
pageSize: 25,
store: store,
displayInfo: true,
displayMsg: ‘Displaying topics {0} – {1} of {2}’,
emptyMsg: “No topics to display”,
// trigger the data store load
store.load({params:{start:0, limit:25}});
what is xtype? The xtype will be looked up at render time up to determine what type of child Component like TextField, NumberField etc to create. i,e
xtype = Class
button = Ext.Button
textfield = Ext.form.TextField
radio – Ext.form.Radio
grid = Ext.grid.GridPanel
combo = Ext.form.Combobox
toolbar = Ext.Toolbar
what is vtype? The validations provided are basic and intended to be easily customizable and extended.
Few vtypes provided by extjs are as below:
emailText : String, The error text to display when the email validation function returns false
alphanumText : String, The error text to display when the alphanumeric validation function returns false
urlText : String, The error text to display when the url validation function returns false
purpose of Load mask? To apply mask to page level / component level.
restrict user not to access any components in page
var pageProcessBox = new Ext.LoadMask( Ext.getBody(), { msg: ‘Loading Employee details.’ } );
how to apply css on select of combo box? using config option as
emptyClass : ’emptycss’, where emptycss is a css classname
how to disable menu option for header in columnModel? using menuDisabled: true
what is maximum size of http post request ? Microsoft Internet Explorer has a maximum uniform resource locator (URL) length of 2,083 characters. Internet Explorer also has a maximum path length of 2,048 characters. This limit applies to both POST request and GET request URLs.
Extjs Vs jQuery ? ExtJs and JQuery are kind of apples and oranges. You can compare Ext Core to JQuery, and ExtJs to JQuery UI.
Ext JS is a full-fledged widget library while jQuery (not jQuery UI) and Mootools are JavaScript frameworks that help with DOM manipulation etc.
Whilst jQuery and Mootools help with the general workings of a site.
jQuery UI is a much less rich set of components.
Ext JS seems to be focussed on tables and storing data, plus manipulating it.
Namespace importance: Namespacing is important for developers in order to organize their code and ensure that their code is not overwritten when loaded in the JavaScript interpreter. If another developer defines a variable with the same name your existing definition will be overwritten.

Because JavaScript is a functionally scoped language creating a function and/or variable which is not wrapped in another function will result in that variable being created in the global scope (window). To combat this, developers place their classes in Objects.
As the client-side JavaScript included in web applications gets larger and more advanced, organization of 3rd party code and your own code becomes increasingly important. Using namespaces will ensure your JavaScript code is safe from other code overwriting it in the global namespace.

EXTJS Life cycle ? Initialization, Rendering, Destroy
Initialization The config object is applied
Classes that extend Component do not need to (and usually should not) provide a separate constructor. Component’s constructor will not only apply any config passed into its subclasses, it also provides all of the following steps.

The base Component events are created
These are events that can be fired by any Component, and they are enable, disable, beforeshow, show, beforehide, hide, beforerender, render, beforedestroy, destroy (see the Component API docs for complete details).

The component is registered in ComponentMgr
As such it will always be available via Ext.getCmp.

The initComponent method is called
This is the most important initialization step for subclasses, as this is a template method intended to be implemented by each subclass to provide any needed constructor logic. The class being created is called first, and each class in the hierarchy back up to Component is expected to call superclass.initComponent. This method makes it easy to implement and, if needed, override the constructor logic at any step in the hierarchy.

Plugins are loaded (if applicable)
If this Component has any plugins specified in the config, they will be initialized at this time.

State is initialized (if applicable)
If the Component is state-aware, its state will be reloaded if available.

The component is rendered (if applicable)
The component is rendered immediately if either renderTo or applyTo is provided in the config, otherwise rendering is deferred until the Component is explicitly displayed in code or is told to render by its container.

Rendering The beforerender event is fired
This is a cancelable event, giving any handler the ability to prevent the Component from rendering if needed.

The container is set
If no container is specified, the parent node of the Component’s underlying DOM element is set as the container.

The onRender method is called
This is the most important rendering step for subclasses, as this is a template method intended to be implemented by each subclass to provide the needed rendering logic. The class being created is called first, and each class in the hierarchy back up to Component is expected to call superclass.onRender. This method makes it easy to implement and, if needed, override the rendering logic at any step in the hierarchy.

The Component is “unhidden”
By default, many components are hidden using special CSS classes like “x-hidden”. If the autoShow config value is true, any “hide” classes are removed from the component at this time.

Custom class and/or style applied
All Component subclasses support the special config properties of cls and style which are a custom, user-defined CSS class and rule respectively that will be applied to the DOM element underlying this Component. Specifying the cls value is the preferred method for visually customizing a Component and its constituent parts. Since the class will get applied to the topmost wrapper element of the Component’s markup, any sub-elements of the Component can be adjusted using standard CSS inheritance rules.

The render event is fired
This is a notification that the Component has been successfully rendered at this point. You can safely assume that its DOM elements are now available to your code if needed. If you attempt to access a Component prior to rendering, it won’t be available and you’ll get an error.

The afterRender method is called
This is another template method for subclasses that can be implemented or overridden to provide any special post-rendering logic that may be needed. Each subclass is expected to call superclass.afterRender.

The Component is hidden and/or disabled (if applicable)
The hidden and disabled config values are applied at this point.

Any state-specific events are initialized (if applicable)
State-aware Components can declare special events that are specific to loading and saving state. If supplied, any such events will be added.

Destruction? The beforedestroy event is fired
This is a cancelable event, giving any handler the ability to prevent the Component from being destroyed if needed.

The beforeDestroy method is called
This is another template method that can be implemented or overridden to provide any special pre-destruction logic that may be needed. Each subclass is expected to call superclass.beforeDestroy.

Element and its listeners are removed
If the Component has been rendered, its underlying Element’s event listeners are removed and the Element itself is then removed from the DOM.

The onDestroy method is called
This is another template method that can be implemented or overridden to provide any special post-destruction logic that may be needed. Each subclass is expected to call superclass.onDestroy. Note that the Container class (and any Container subclasses) provides a default implementation of onDestroy that automatically loops through its items collection and calls destroy on each child Component recursively.

Component is unregistered from ComponentMgr
It will no longer be available via Ext.getCmp.

The destroy event is fired
This is simply a notification that the Component has been successfully destroyed at this point and is no longer available in the DOM.

Event listeners on the Component are removed
The Component itself can have event listeners separately from its underlying Element. If any exist, they are removed.
Event Handling
Widget Examples
Application Layout/scope