<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Sencha Forum - Ext:User Extensions and Plugins</title>
		<link>http://www.sencha.com/forum/</link>
		<description><![CDATA[Share your custom Ext JS extensions & plugins for version 4.x]]></description>
		<language>en</language>
		<lastBuildDate>Wed, 22 May 2013 02:13:14 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>60</ttl>
		<image>
			<url>http://www.sencha.com/forum/images/misc/rss.png</url>
			<title>Sencha Forum - Ext:User Extensions and Plugins</title>
			<link>http://www.sencha.com/forum/</link>
		</image>
		<item>
			<title>Ext.ux.Deferred</title>
			<link>http://www.sencha.com/forum/showthread.php?264163-Ext.ux.Deferred&amp;goto=newpost</link>
			<pubDate>Tue, 21 May 2013 20:32:07 GMT</pubDate>
			<description><![CDATA[Hey guys! 
 
Today I'm gonna to present javascript promises for ExtJS and Sencha Touch! 
Hell yeah! 
Nowadays, lots of frameworks and libraries have...]]></description>
			<content:encoded><![CDATA[<div>Hey guys!<br />
<br />
Today I'm gonna to present javascript promises for ExtJS and Sencha Touch!<br />
Hell yeah!<br />
Nowadays, lots of frameworks and libraries have implemented promises: ExtJS/Sencha Touch wont be less so!<br />
<br />
Here's the problem:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">aSync1 (10, function (val1) {<br />
&nbsp; aSync2 (val1, function (val2) {<br />
&nbsp; &nbsp; aSync3 (val2, function (val3) {<br />
&nbsp; &nbsp; &nbsp; alert ('Top of the pyramid with: ', val3);&nbsp; &nbsp; &nbsp; &nbsp;  <br />
&nbsp; &nbsp; &nbsp; });&nbsp; &nbsp;  <br />
&nbsp; &nbsp; }); <br />
});</code><hr />
</div> and here the solution:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">aSync1 (10)&nbsp; &nbsp;  <br />
&nbsp; &nbsp; .then (aSync2)&nbsp; &nbsp;  <br />
&nbsp; &nbsp; .then (aSync3)&nbsp; &nbsp;  <br />
&nbsp; &nbsp; .then (function (val3) {&nbsp; &nbsp; &nbsp; &nbsp;  <br />
&nbsp; &nbsp; &nbsp; alert ('End of the queue with: ', val3);&nbsp; &nbsp;  <br />
&nbsp; &nbsp; }); <br />
});</code><hr />
</div> This is only one of the extraordinary things that Ext.ux.Deferred allows you to do!<br />
For more examples, read the docs on the github page: <a href="https://github.com/wilk/Ext.ux.Deferred" target="_blank" rel="nofollow">https://github.com/wilk/Ext.ux.Deferred</a><br />
<br />
For class documentation, lunch jsduck ;)<br />
<br />
Soon even on Sencha Market!<br />
<br />
Enjoy it!<br />
<br />
Ciao!<br />
Wilk</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>Wilky</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?264163-Ext.ux.Deferred</guid>
		</item>
		<item>
			<title>Count Mark on Tabs</title>
			<link>http://www.sencha.com/forum/showthread.php?264157-Count-Mark-on-Tabs&amp;goto=newpost</link>
			<pubDate>Tue, 21 May 2013 18:23:09 GMT</pubDate>
			<description><![CDATA[Hi, 
 
I would like to know if there's some plugin that adds a count mark on tabs. Please see this image so you can get an idea:...]]></description>
			<content:encoded><![CDATA[<div>Hi,<br />
<br />
I would like to know if there's some plugin that adds a count mark on tabs. Please see this image so you can get an idea:<br />
<a href="http://www4.picturepush.com/photo/a/13124287/img/13124287.png" target="_blank" rel="nofollow">http://www4.picturepush.com/photo/a/...g/13124287.png</a><br />
<br />
If there's no plugin for this, can somebody give me an idea where should I look on ?<br />
<br />
Thanks.</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>mysticav</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?264157-Count-Mark-on-Tabs</guid>
		</item>
		<item>
			<title>Text suggest facebook style</title>
			<link>http://www.sencha.com/forum/showthread.php?263930-Text-suggest-facebook-style&amp;goto=newpost</link>
			<pubDate>Fri, 17 May 2013 16:39:06 GMT</pubDate>
			<description><![CDATA[Hello to all! 
I implemented this ExtJS control, starting from an existing mootool's component...]]></description>
			<content:encoded><![CDATA[<div>Hello to all!<br />
I implemented this ExtJS control, starting from an existing mootool's component <a href="http://www.devthought.com/projects/mootools/textboxlist/" target="_blank" rel="nofollow">http://www.devthought.com/projects/m...s/textboxlist/</a><br />
<br />
<br />
This control is not an extension of the combobox, but a simple textfield, so no store is assigned to the object.<br />
The data come from:<br />
- Ajax call;<br />
- Values;<br />
<br />
<br />
This is a basic version, I will try to add more features<br />
I know there is already a plugin that makes this (<a href="http://www.sencha.com/forum/showthread.php?139170-BoxSelect-for-Ext-4-another-implementation&amp;p=621549#post621549" target="_blank">http://www.sencha.com/forum/showthre...549#post621549</a>), but this type of control I needed for a particular project<br />
<br />
There is an example here:<br />
<a href="http://jsfiddle.net/steve88/jR7wT/" target="_blank" rel="nofollow">http://jsfiddle.net/steve88/jR7wT/<br />
</a><br />
Local suggest:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Ext.create(&quot;TextSuggest&quot;, {<br />
&nbsp;fieldLabel:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Test&quot;,<br />
&nbsp;width:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 600,<br />
&nbsp;labelWidth:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 100,<br />
&nbsp;values:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; [<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&quot;id&quot;: 1, &quot;value&quot;: &quot;Test&quot;},<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&quot;id&quot;: 2, &quot;value&quot;: &quot;Test2&quot;},<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {&quot;id&quot;: 3, &quot;value&quot;: &quot;Test3&quot;}<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  ],<br />
config:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  minLength:&nbsp; &nbsp; 2,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  valueField:&nbsp; &nbsp; &quot;Id&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  displayField: &quot;Value&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />
})</code><hr />
</div> <br />
Remote suggest:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Ext.create(&quot;TextSuggest&quot;, {<br />
&nbsp;fieldLabel:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;Test&quot;,<br />
&nbsp;width:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 600,<br />
&nbsp;labelWidth:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 100,<br />
config:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  minLength:&nbsp; &nbsp; 2,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  queryRemote: true,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  valueField:&nbsp; &nbsp; &quot;Id&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  displayField: &quot;Value&quot;,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  remote:&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; url:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &quot;URL OF FILE&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  }<br />
})</code><hr />
</div> Works with extjs version 4.1 or higher, I have not tested earlier versions<br />
<br />
I hope you enjoy it and that you need it. :)<br />
<br />
Steve</div>


	<div style="padding:10px">

	

	

	

	
		<fieldset class="fieldset">
			<legend>Attached Files</legend>
			<ul>
			<li>
	<img class="inlineimg" src="/zip.gif" alt="File Type: zip" />
	<a href="http://www.sencha.com/forum/attachment.php?attachmentid=43858&amp;d=1368808990">TextSuggest.zip&lrm;</a> 
(10.9 KB)
</li> 
			</ul>
		</fieldset>
	

	</div>
 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>Steve88</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?263930-Text-suggest-facebook-style</guid>
		</item>
		<item>
			<title>Selection of records over multiple pages in a grid - Select All</title>
			<link>http://www.sencha.com/forum/showthread.php?263871-Selection-of-records-over-multiple-pages-in-a-grid-Select-All&amp;goto=newpost</link>
			<pubDate>Thu, 16 May 2013 22:51:03 GMT</pubDate>
			<description>Hi, 
 
I was looking around the internet and found this link:...</description>
			<content:encoded><![CDATA[<div>Hi,<br />
<br />
I was looking around the internet and found this link:<br />
<a href="http://www.sencha.com/forum/showthread.php?247414-Selection-of-records-over-multiple-pages-in-a-grid" target="_blank">http://www.sencha.com/forum/showthre...ages-in-a-grid</a><br />
<br />
I need select all the items of the grid and clear all the selections, so based on the link and modified and implemented it like this:<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">var grid, store;<br />
<br />
/**<br />
&nbsp;* Grid PagingSelectionPersistence plugin<br />
&nbsp;* <br />
&nbsp;* Maintains row selection state when moving between pages of a paginated grid<br />
&nbsp;*<br />
&nbsp;* Public Methods:<br />
&nbsp;* getPersistedSelection() - retrieve the array of selected records across all pages<br />
&nbsp;* clearPersistedSelection() - deselect records across all pages<br />
&nbsp;* <br />
&nbsp;*<br />
&nbsp;* @class&nbsp;  Ext.ux.grid.plugin.PagingSelectionPersistence<br />
&nbsp;* @extends Ext.AbstractPlugin<br />
&nbsp;* @author&nbsp; Bill Dami<br />
&nbsp;* @date&nbsp; &nbsp; December 20th, 2011<br />
&nbsp;*/<br />
Ext.define('Ext.ux.grid.plugin.PagingSelectionPersistence', {<br />
&nbsp; &nbsp; alias: 'plugin.pagingselectpersist',<br />
&nbsp; &nbsp; extend: 'Ext.AbstractPlugin',<br />
&nbsp; &nbsp; pluginId: 'pagingSelectionPersistence',<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; //array of selected records<br />
&nbsp; &nbsp; selection: [],<br />
&nbsp; &nbsp; //hash map of record id to selected state<br />
&nbsp; &nbsp; selected: {},<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; init: function(grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.grid = grid;<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.selModel = this.grid.getSelectionModel();<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.isCheckboxModel = (this.selModel.$className == 'Ext.selection.CheckboxModel');<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.origOnHeaderClick = this.selModel.onHeaderClick;<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.bindListeners(); <br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; destroy: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.selection = [];<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.selected = {};<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.disable();<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; enable: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(this.disabled &amp;&amp; this.grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.grid.getView().on('refresh', this.onViewRefresh, this);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.on('select', this.onRowSelect, this);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.on('deselect', this.onRowDeselect, this);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.isCheckboxModel) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //For CheckboxModel, we need to detect when the header deselect/select page checkbox<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //is clicked, to make sure the plugin's selection array is updated. This is because Ext.selection.CheckboxModel<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //interally supresses event firings for selectAll/deselectAll when its clicked<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.onHeaderClick = function(headerCt, header, e) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var isChecked = header.el.hasCls(Ext.baseCSSPrefix + 'grid-hd-checker-on');<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me.origOnHeaderClick.apply(this, arguments);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(isChecked) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me.onDeselectPage();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me.onSelectPage();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; this.callParent();<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; disable: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; if(this.grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.grid.getView().un('refresh', this.onViewRefresh, this);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.un('select', this.onRowSelect, this);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.un('deselect', this.onRowDeselect, this);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.onHeaderClick = this.origOnHeaderClick;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.callParent();<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; bindListeners: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var disabled = this.disabled;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; this.disable();<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(!disabled) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.enable();<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; onViewRefresh : function(view, eOpts) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var store = this.grid.getStore(),<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sel = [],<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hdSelectState,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rec,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i;<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.ignoreChanges = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; for(i = store.getCount() - 1; i &gt;= 0; i--) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; rec = store.getAt(i);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.selected[rec.getId()]) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sel.push(rec);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.selModel.select(sel, false);<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(this.isCheckboxModel) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //For CheckboxModel, make sure the header checkbox is correctly<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //checked/unchecked when the view is refreshed depending on the <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //selection state of the rows on that page (workaround for possible bug in Ext 4.0.7?)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hdSelectState = (this.selModel.selected.getCount() === this.grid.getStore().getCount());<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.toggleUiHeader(hdSelectState);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; this.ignoreChanges = false;<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; onRowSelect: function(sm, rec, idx, eOpts) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; if(this.ignoreChanges === true) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(!this.selected[rec.getId()]) <br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selection.push(rec);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected[rec.getId()] = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; onRowDeselect: function(sm, rec, idx, eOpts) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var i;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(this.ignoreChanges === true) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(this.selected[rec.getId()])<br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i = this.selection.length - 1; i &gt;= 0; i--) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(this.selection[i].getId() == rec.getId()) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selection.splice(i, 1);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected[rec.getId()] = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; onSelectPage: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var sel = this.selModel.getSelection(),<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; len = this.getPersistedSelection().length,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; for(i = 0; i &lt; sel.length; i++) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(i + sel[i]);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.onRowSelect(this.selModel, sel[i]);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(len !== this.getPersistedSelection().length) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.fireEvent('selectionchange', this.selModel, [], {});<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; onDeselectPage: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var store = this.grid.getStore(),<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; len = this.getPersistedSelection().length,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; i;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; for(i = store.getCount() - 1; i &gt;= 0; i--) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.onRowDeselect(this.selModel, store.getAt(i));<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(len !== this.getPersistedSelection().length) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.fireEvent('selectionchange', this.selModel, [], {});<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; getPersistedSelection: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; return [].concat(this.selection);<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // private<br />
&nbsp; &nbsp; onSelectionClear: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; if (! this.ignoreSelectionChanges) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // selection cleared by user<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // also called internally when the selection replaces the old selection<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selection = [];<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected = {};<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }, // end onSelectionClear <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; clearPersistedSelection: function() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var changed = (this.selection.length &gt; 0);<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; this.selection = [];<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.selected = {};<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.onViewRefresh();<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(changed) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selModel.fireEvent('selectionchange', this.selModel, [], {});<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; /**<br />
&nbsp; &nbsp; &nbsp; * Selects all the rows in the grid, including those on other page<br />
&nbsp; &nbsp; &nbsp; * Be very careful using this on very large datasets<br />
&nbsp; &nbsp; */<br />
&nbsp; &nbsp; selectAll: function() {&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; var storeB = this.grid.getStore();<br />
&nbsp; &nbsp; &nbsp; &nbsp; storeB.suspendEvents();<br />
&nbsp; &nbsp; &nbsp; &nbsp; //alert(storeB.getTotalCount());<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; storeB.load({<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; params: {start: 0, limit: storeB.getTotalCount() },<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; callback: function(records, operation, success) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if (records.length &gt; 0){ // Issue is here: Records returns as NULL <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //alert('Num Records: ' + records.length);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = records.length - 1; i &gt;= 0; i--) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(!this.selected[records[i].getId()]) <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selection.push(records[i]);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected[records[i].getId()] = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; storeB.resumeEvents();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.onViewRefresh();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; /*<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selection = storeB.data.items.slice(0);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected = {};<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (var i = this.selection.length - 1; i &gt;= 0; i--) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected[this.selection[i].id] = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; };*/<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert('Error no tiene records');<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scope: this<br />
&nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(!this.selected[rec.getId()]) <br />
&nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selection.push(rec);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.selected[rec.getId()] = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; },<br />
<br />
&nbsp; &nbsp; countAll: function() { <br />
&nbsp; &nbsp; &nbsp; &nbsp; var storeA = this.grid.getStore();<br />
&nbsp; &nbsp; &nbsp; &nbsp; alert('store count '+ storeA.getCount());<br />
&nbsp; &nbsp; &nbsp; &nbsp; alert('store count '+ storeA.getTotalCount());<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
});<br />
<br />
Ext.onReady(function(){<br />
&nbsp; &nbsp; Ext.tip.QuickTipManager.init();<br />
<br />
&nbsp; &nbsp; Ext.define('ForumThread', {<br />
&nbsp; &nbsp; &nbsp; &nbsp; extend: 'Ext.data.Model',<br />
&nbsp; &nbsp; &nbsp; &nbsp; fields: [<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'title', 'forumtitle', 'forumid', 'username',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {name: 'replycount', type: 'int'},<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {name: 'lastpost', mapping: 'lastpost', type: 'date', dateFormat: 'timestamp'},<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 'lastposter', 'excerpt', 'threadid'<br />
&nbsp; &nbsp; &nbsp; &nbsp; ],<br />
&nbsp; &nbsp; &nbsp; &nbsp; idProperty: 'threadid'<br />
&nbsp; &nbsp; });<br />
<br />
&nbsp; &nbsp; store = Ext.create('Ext.data.Store', {<br />
&nbsp; &nbsp; &nbsp; &nbsp; pageSize: 50,<br />
&nbsp; &nbsp; &nbsp; &nbsp; model: 'ForumThread',<br />
&nbsp; &nbsp; &nbsp; &nbsp; remoteSort: true,<br />
&nbsp; &nbsp; &nbsp; &nbsp; proxy: {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; type: 'jsonp',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; url: 'http://www.sencha.com/forum/topics-browse-remote.php',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reader: {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root: 'topics',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; totalProperty: 'totalCount'<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; simpleSortMode: true<br />
&nbsp; &nbsp; &nbsp; &nbsp; },<br />
&nbsp; &nbsp; &nbsp; &nbsp; sorters: [{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; property: 'lastpost',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; direction: 'DESC'<br />
&nbsp; &nbsp; &nbsp; &nbsp; }]<br />
&nbsp; &nbsp; });<br />
<br />
&nbsp; &nbsp; grid = Ext.create('Ext.grid.Panel', {<br />
&nbsp; &nbsp; &nbsp; &nbsp; id : 'test_grid',<br />
&nbsp; &nbsp; &nbsp; &nbsp; width: 600,<br />
&nbsp; &nbsp; &nbsp; &nbsp; height: 400,<br />
&nbsp; &nbsp; &nbsp; &nbsp; title: 'ExtJS.com - Browse Forums',<br />
&nbsp; &nbsp; &nbsp; &nbsp; store: store,<br />
&nbsp; &nbsp; &nbsp; &nbsp; selModel: Ext.create('Ext.selection.CheckboxModel'),<br />
&nbsp; &nbsp; &nbsp; &nbsp; plugins: [{ptype : 'pagingselectpersist'}],<br />
&nbsp; &nbsp; &nbsp; &nbsp; viewConfig: {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: 'gv',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; trackOver: true,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; stripeRows: true,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; loadMask: false<br />
&nbsp; &nbsp; &nbsp; &nbsp; },<br />
&nbsp; &nbsp; &nbsp; &nbsp; // grid columns<br />
&nbsp; &nbsp; &nbsp; &nbsp; columns:[{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: 'topic',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text: &quot;Topic&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataIndex: 'title',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; flex: 1,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sortable: false<br />
&nbsp; &nbsp; &nbsp; &nbsp; },{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text: &quot;Author&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataIndex: 'username',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 100,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; hidden: true,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sortable: true<br />
&nbsp; &nbsp; &nbsp; &nbsp; },{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text: &quot;Replies&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataIndex: 'replycount',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 70,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; align: 'right',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sortable: true<br />
&nbsp; &nbsp; &nbsp; &nbsp; },{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; id: 'last',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; text: &quot;Last Post&quot;,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; dataIndex: 'lastpost',<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; width: 150,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sortable: true<br />
&nbsp; &nbsp; &nbsp; &nbsp; }],<br />
&nbsp; &nbsp; &nbsp; &nbsp; bbar: Ext.create('Ext.PagingToolbar', {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; store: store,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; displayInfo: true,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; emptyMsg: &quot;No topics to display&quot;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }),<br />
&nbsp; &nbsp; &nbsp; &nbsp; renderTo: 'topic-grid'<br />
&nbsp; &nbsp; });<br />
<br />
&nbsp; &nbsp; // trigger the data store load<br />
&nbsp; &nbsp; store.loadPage(1);<br />
});</code><hr />
</div> Link: <a href="http://jsfiddle.net/ronaldsaenz88/Whkbu/48/" target="_blank" rel="nofollow">http://jsfiddle.net/ronaldsaenz88/Whkbu/48/</a><br />
<br />
Any advice or suggestion and welcome.<br />
<br />
Regards,<br />
Ronald</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>ronaldsaenz88</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?263871-Selection-of-records-over-multiple-pages-in-a-grid-Select-All</guid>
		</item>
		<item>
			<title>grid to grid buttons</title>
			<link>http://www.sencha.com/forum/showthread.php?263727-grid-to-grid-buttons&amp;goto=newpost</link>
			<pubDate>Wed, 15 May 2013 12:39:06 GMT</pubDate>
			<description>Okay so I have been looking for something like itemselector but with grids. so I created my own control that can be placed between two grids and it...</description>
			<content:encoded><![CDATA[<div>Okay so I have been looking for something like itemselector but with grids. so I created my own control that can be placed between two grids and it will take the selected records and place add/remove them to the other grid.<br />
<br />
here it is.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">Ext.define('App.view.controls.CamGridToGridBtns', {<br />
&nbsp; &nbsp; extend: 'Ext.container.ButtonGroup',<br />
&nbsp; &nbsp; alias: 'widget.gridtogridbtns',<br />
&nbsp; &nbsp; columns:1,<br />
&nbsp; &nbsp; height: 300,<br />
&nbsp; &nbsp; width:28,<br />
&nbsp; &nbsp; margin: '5 0 5 0',<br />
&nbsp; &nbsp; items: [{<br />
&nbsp; &nbsp; &nbsp; &nbsp; margin: '120 0 0 0',<br />
&nbsp; &nbsp; &nbsp; &nbsp; iconCls: 'x-tbar-page-prev',<br />
&nbsp; &nbsp; &nbsp; &nbsp; handler: function (btn) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var me = this.up('container');<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var grid = me.next();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selected = grid.getView().getSelectionModel().getSelection();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me.moveRec(false, selected);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },{<br />
&nbsp; &nbsp; &nbsp; &nbsp; margin: '0 0 130 0',<br />
&nbsp; &nbsp; &nbsp; &nbsp; iconCls: 'x-tbar-page-next',<br />
&nbsp; &nbsp; &nbsp; &nbsp; handler: function (btn) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var me = this.up('container');<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; var grid = me.prev();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; selected = grid.getView().getSelectionModel().getSelection();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me.moveRec(true, selected);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }],<br />
<br />
<br />
&nbsp; &nbsp; moveRec: function (add, recs) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this,<br />
&nbsp; &nbsp; &nbsp; &nbsp; fromGrid = me.prev(),<br />
&nbsp; &nbsp; &nbsp; &nbsp; toGrid = me.next(),<br />
&nbsp; &nbsp; &nbsp; &nbsp; fromStore = add ? fromGrid.store : toGrid.store,<br />
&nbsp; &nbsp; &nbsp; &nbsp; toStore = add ? toGrid.store : fromGrid.store;<br />
&nbsp; &nbsp; &nbsp; &nbsp; toStore.add(recs);<br />
&nbsp; &nbsp; &nbsp; &nbsp; fromStore.remove(recs);<br />
&nbsp; &nbsp; }<br />
});</code><hr />
</div> HOW TO USE IT:<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">...<br />
{xtype: 'grid', itemId: 'grid1',columns:[{text:'Name', dataIndex:'Name'},{text:'Age', dataIndex:'Age'}]},<br />
<b>{xtype: 'gridtogridbtns'},//&lt;---use it in between two grids</b><br />
{xtype: 'grid', itemId: 'grid2', columns:[{text:'Name', dataIndex:'Name'},{text:'Age', dataIndex:'Age'}]}</code><hr />
</div> if you want to improve on in anyway feel free to hack at it.<br />
or even if someone has made a better one already let me know:D</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>AssetWorks</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?263727-grid-to-grid-buttons</guid>
		</item>
		<item>
			<title>Ext.ux.TplComponentLoader</title>
			<link>http://www.sencha.com/forum/showthread.php?262649-Ext.ux.TplComponentLoader&amp;goto=newpost</link>
			<pubDate>Wed, 01 May 2013 04:15:20 GMT</pubDate>
			<description><![CDATA[This is an override of ComponentLoader to patch in XTemplate support with renderer:'tpl', you can load templates by URL or embedded in the page like...]]></description>
			<content:encoded><![CDATA[<div>This is an override of ComponentLoader to patch in XTemplate support with renderer:'tpl', you can load templates by URL or embedded in the page like knockout, etc.  It also shows model binding that will auto update the template when the model changes.<br />
<br />
Overview page and live demo included.<br />
<a href="https://github.com/starman69/Ext.ux.TplComponentLoader" target="_blank" rel="nofollow">https://github.com/starman69/Ext.ux.TplComponentLoader<br />
<br />
</a></div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>dpatten69</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262649-Ext.ux.TplComponentLoader</guid>
		</item>
		<item>
			<title>Ext.ux.data.Encryption, Ext.ux.data.proxy.EncryptedLocalStorage</title>
			<link>http://www.sencha.com/forum/showthread.php?262424-Ext.ux.data.Encryption-Ext.ux.data.proxy.EncryptedLocalStorage&amp;goto=newpost</link>
			<pubDate>Sat, 27 Apr 2013 08:31:16 GMT</pubDate>
			<description>I had a need to encrypt some data in localStorage.  I cleaned up the code and built an example for it.  The example uses a Notes MVC application and...</description>
			<content:encoded><![CDATA[<div>I had a need to encrypt some data in localStorage.  I cleaned up the code and built an example for it.  The example uses a Notes MVC application and AES, SHA3 to encrypt the data.<br />
<br />
update: added overview page and live demo.<br />
<br />
<a href="https://github.com/starman69/Ext.ux.data.Encryption" target="_blank" rel="nofollow">https://github.com/starman69/Ext.ux.data.Encryption<br />
<br />
<br />
</a></div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>dpatten69</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262424-Ext.ux.data.Encryption-Ext.ux.data.proxy.EncryptedLocalStorage</guid>
		</item>
		<item>
			<title>Could you please explain how can I document @cfg with Sencha Eclipse plugin</title>
			<link>http://www.sencha.com/forum/showthread.php?262391-Could-you-please-explain-how-can-I-document-cfg-with-Sencha-Eclipse-plugin&amp;goto=newpost</link>
			<pubDate>Fri, 26 Apr 2013 17:20:16 GMT</pubDate>
			<description>Hi there, 
  
I am testing your Sencha Eclipse plugin. Everything works fine except @cfg tag. I followed the instruction on http://vimeo.com/62190725...</description>
			<content:encoded><![CDATA[<div>Hi there,<br />
 <br />
I am testing your Sencha Eclipse plugin. Everything works fine except @cfg tag. I followed the instruction on <a href="http://vimeo.com/62190725" target="_blank" rel="nofollow">http://vimeo.com/62190725</a> and copy paste <a href="https://github.com/senchaeclipse/ConfigPropertiesEx/blob/master/src/app/CfgEx1.js" target="_blank" rel="nofollow">https://github.com/senchaeclipse/Con.../app/CfgEx1.js</a> source code into the IDE. However the code assist does not work like the video demo. <br />
 <br />
As you can see from the screen shot below, the foo and bar property not showing up and constructor shows (Undefined) instead of MyApp.CfgEx1Cfg.<br />
 <br />
Could you please explain how can I document @cfg?<br />
 <a href="http://www.sencha.com/forum/attachment.php?attachmentid=43385"  title="Name:  
Views: 
Size:  ">Attachment 43385</a><br />
Thanks<br />
Giovanni</div>


	<div style="padding:10px">

	

	

	
		<fieldset class="fieldset">
			<legend>Attached Images</legend>
			<ul>
			<li>
	<img class="inlineimg" src="/jpg.gif" alt="File Type: jpg" />
	<a href="http://www.sencha.com/forum/attachment.php?attachmentid=43385&amp;d=1367000196">Eclipse.jpg&lrm;</a> 
(86.8 KB)
</li> 
			</ul>
			</fieldset>
	

	

	</div>
 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>ggentile73</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262391-Could-you-please-explain-how-can-I-document-cfg-with-Sencha-Eclipse-plugin</guid>
		</item>
		<item>
			<title>Ext.ux.data.PagingStore - updated for Ext JS 4</title>
			<link>http://www.sencha.com/forum/showthread.php?262388-Ext.ux.data.PagingStore-updated-for-Ext-JS-4&amp;goto=newpost</link>
			<pubDate>Fri, 26 Apr 2013 16:02:21 GMT</pubDate>
			<description><![CDATA[Updating an Ext JS 3 app, finally forced me to need Condor's Ext.ux.data.PagingStore extension, since I couldn't find one amongst the 270+ posts on...]]></description>
			<content:encoded><![CDATA[<div>Updating an Ext JS 3 app, finally forced me to need Condor's Ext.ux.data.PagingStore extension, since I couldn't find one amongst the 270+ posts on the thread at <a href="http://www.sencha.com/forum/showthread.php?71532-Ext.ux.data.PagingStore-v0.5" target="_blank">http://www.sencha.com/forum/showthre...gingStore-v0.5</a>.<br />
<br />
Code is at:  <a href="https://github.com/aghuddleston/Ext.ux.data.PagingStore" target="_blank" rel="nofollow">https://github.com/aghuddleston/Ext.ux.data.PagingStore</a><br />
<br />
The main difference from the Ext JS 3 version is that start, limit and page are no longer part of params, but are their own properties on the options config used during store load.<br />
<br />
Example remote store (note last options):<br />
<div class="bbcode_container">
	<div class="bbcode_description">PHP Code:</div>
	<hr /><code class="bbcode_code"><code><span style="color: #000000">
<span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">myStore&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Ext</span><span style="color: #007700">.</span><span style="color: #0000BB">create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Ext.ux.data.PagingStore'</span><span style="color: #007700">,&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">model</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'User'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">pageSize</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">lastOptions</span><span style="color: #007700">:&nbsp;{</span><span style="color: #0000BB">start</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">0</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">limit</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">page</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">proxy</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'ajax'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">url</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'url/goes/here'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">reader</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'json'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">root</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'rows'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});&nbsp;<br /></span><span style="color: #0000BB"></span>
</span>
</code></code><hr />
</div> Example local store:<br />
<div class="bbcode_container">
	<div class="bbcode_description">PHP Code:</div>
	<hr /><code class="bbcode_code"><code><span style="color: #000000">
<span style="color: #0000BB">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">var&nbsp;</span><span style="color: #0000BB">myStore&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">Ext</span><span style="color: #007700">.</span><span style="color: #0000BB">create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Ext.ux.data.PagingStore'</span><span style="color: #007700">,&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">model</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'User'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">pageSize</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">proxy</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'memory'</span><span style="color: #007700">,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">reader</span><span style="color: #007700">:&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">type</span><span style="color: #007700">:&nbsp;</span><span style="color: #DD0000">'array'<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;},<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">data</span><span style="color: #007700">:&nbsp;</span><span style="color: #0000BB">data<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #007700">});&nbsp;<br /></span><span style="color: #0000BB"></span>
</span>
</code></code><hr />
</div> My goal was to match the behavior of the Ext JS 3 version, so it should only request new data if params or extraParams changes, otherwise it is just paging through the existing store.  To force a reload, make sure to delete store.lastParams before store.load is called.<br />
<br />
It is very lightly tested so far, with Ext JS 4.1.1.  Feel free to fork, push/pull etc for any needed changes/enhancements.</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>aghextjs</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262388-Ext.ux.data.PagingStore-updated-for-Ext-JS-4</guid>
		</item>
		<item>
			<title>Multi-sort plugin</title>
			<link>http://www.sencha.com/forum/showthread.php?262307-Multi-sort-plugin&amp;goto=newpost</link>
			<pubDate>Thu, 25 Apr 2013 20:22:44 GMT</pubDate>
			<description>This is my first plugin, and rather simple, but figured I would share it for feedback, and perhaps others might find it helpful. 
 
The goal of this...</description>
			<content:encoded><![CDATA[<div>This is my first plugin, and rather simple, but figured I would share it for feedback, and perhaps others might find it helpful.<br />
<br />
The goal of this plugin was to allow a grid to have multi-sorting by holding shift while clicking columns.  To remove the sorting, click a column by itself to sort by only that column.<br />
<br />
I have a separate plugin for removing sorting altogether, but that's something a bit more muddled as it shares alot of other stuff.<br />
<br />
<br />
Any feedback is welcome.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">/**<br />
&nbsp;* Plugin that enables a mulit-sorting by holding shift and clicking column headers&lt;br&gt;<br />
&nbsp;*<br />
&nbsp;* @author Ing. Jim Eckels<br />
&nbsp;* @version 1.0 (tested against 4.2.1)<br />
&nbsp;* @updated 2013-04-20 by Jim Eckels (jeckels@parkcitygroup.com)<br />
&nbsp;* Initial draft<br />
&nbsp;* @updated 2013-05-03 by Jim Eckels (jeckels@parkcitygroup.com)<br />
&nbsp;* Use header tooltip to display what the current sort order applied is<br />
*/<br />
Ext.define('Ext.ux.grid.MultiSort', {<br />
&nbsp; &nbsp; extend: 'Ext.AbstractPlugin',<br />
&nbsp; &nbsp; alias: 'plugin.multisort',<br />
&nbsp; &nbsp; mixins: {<br />
&nbsp; &nbsp; &nbsp; &nbsp; observable: 'Ext.util.Observable'<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // @public<br />
&nbsp; &nbsp; showToolTip: true,<br />
&nbsp; &nbsp; sortTipText: 'Sorted by:',<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // @private<br />
&nbsp; &nbsp; _sortCols: [],<br />
&nbsp; &nbsp; _grid: undefined,<br />
&nbsp; &nbsp; _toolTip: undefined,<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; init: function(grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; grid.on({<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; beforedestroy: me.unsetup,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; reconfigure: me.resetup,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; scope: me<br />
&nbsp; &nbsp; &nbsp; &nbsp; });<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; me.setup(grid);<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // private<br />
&nbsp; &nbsp; setup: function(grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this;<br />
&nbsp; &nbsp; &nbsp; &nbsp; me._grid = grid;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Ext.each(me._grid.headerCt.getGridColumns(), function (c) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.sortable = false;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.on('headerclick',me.onColumnClicked, me);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }, me);<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; onColumnClicked: function(header, col, e, t, eOpts){<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sorters = [];<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; e.stopEvent();<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if (e.shiftKey) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ext.each(me._sortCols, function (c) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(c.sortState) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( c.id !== col.id ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sorters.push(<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; property: c.dataIndex,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; direction: c.sortState<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; &nbsp; &nbsp; } else {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ext.each(me._sortCols, function (c) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(c.sortState) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; // if its not the column that was clicked OR, we were previously multi-sorting, clear sortState and remove icons<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( (c.id !== col.id) || (me._sortCols.length &gt; 1) ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; c.setSortState(undefined, true, true);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me._sortCols = [];<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; sorters.push(<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; property: col.dataIndex,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; direction: me.getDirection(col)<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; );<br />
&nbsp; &nbsp; &nbsp; &nbsp; me.addSortColumn(col);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; me._grid.store.sort(sorters);<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; me.createToolTip();<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; addSortColumn: function(col){<br />
&nbsp; &nbsp; &nbsp; &nbsp;  var me = this, <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exists = false,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; colToMove = undefined;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; Ext.each(me._sortCols, function (c) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if( c.id === col.id ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; colToMove = c<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; exists = true;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if(colToMove){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ext.Array.remove(me._sortCols,colToMove);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ext.Array.push(me._sortCols,colToMove);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if( !exists ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me._sortCols.push(col);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; getDirection: function(col){<br />
&nbsp; &nbsp; &nbsp; &nbsp; var dir;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; dir = (col.sortState == 'ASC' ) ? 'DESC' : 'ASC';<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; col.setSortState(dir, true, true);<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; return dir;<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; createToolTip: function(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tip = '';<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; if( me.showToolTip ) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me.clearToolTip();<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ext.each(me._sortCols, function (c) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; tip += '&lt;br/&gt;' + c.text;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me._toolTip = Ext.create('Ext.tip.ToolTip',{<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; target: me._grid.headerCt.el,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; html: me.sortTipText + tip,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; renderTo: Ext.getBody()<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; });<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // @public<br />
&nbsp; &nbsp; clearToolTip: function () {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this;<br />
&nbsp; &nbsp; &nbsp; &nbsp; if(me._toolTip) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; me._toolTip.setTarget(undefined);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Ext.destroy(me._toolTip);<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; // private<br />
&nbsp; &nbsp; unsetup: function(grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; var me = this;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; me.clearToolTip();<br />
&nbsp; &nbsp; &nbsp; &nbsp; me._grid = null;<br />
&nbsp; &nbsp; },<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; resetup: function (grid) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.unsetup(grid);<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.setup(grid);<br />
&nbsp; &nbsp; }<br />
<br />
});</code><hr />
</div> </div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>JIMECKELS</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262307-Multi-sort-plugin</guid>
		</item>
		<item>
			<title>Ext.ux.grid.FiltersFeature with remote list source</title>
			<link>http://www.sencha.com/forum/showthread.php?262239-Ext.ux.grid.FiltersFeature-with-remote-list-source&amp;goto=newpost</link>
			<pubDate>Thu, 25 Apr 2013 07:42:01 GMT</pubDate>
			<description>when i using Ext.ux.grid.FiltersFeature with type list, using remote store data, the filters menu ui is not constructed, it ust show an empty box,...</description>
			<content:encoded><![CDATA[<div>when i using Ext.ux.grid.FiltersFeature with type list, using remote store data, the filters menu ui is not constructed, it ust show an empty box, the example using SimAjax, and when i tried to change it using remote proxy, it also resulting the same bug</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>1412</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262239-Ext.ux.grid.FiltersFeature-with-remote-list-source</guid>
		</item>
		<item>
			<title>Ext.data.Model.overlay(record);</title>
			<link>http://www.sencha.com/forum/showthread.php?262012-Ext.data.Model.overlay(record)&amp;goto=newpost</link>
			<pubDate>Tue, 23 Apr 2013 06:19:11 GMT</pubDate>
			<description><![CDATA[I had two models and needed to copy all matching fields from recordA to recordB, couldn't find method in Ext.data.Model that does it. So I quick hack...]]></description>
			<content:encoded><![CDATA[<div>I had two models and needed to copy all matching fields from recordA to recordB, couldn't find method in Ext.data.Model that does it. So I quick hack it.<br />
<br />
<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">PHP Code:</div>
	<hr /><code class="bbcode_code"><code><span style="color: #000000">
<span style="color: #0000BB">Ext</span><span style="color: #007700">.</span><span style="color: #0000BB">override</span><span style="color: #007700">(</span><span style="color: #0000BB">Ext</span><span style="color: #007700">.</span><span style="color: #0000BB">data</span><span style="color: #007700">.</span><span style="color: #0000BB">Model</span><span style="color: #007700">,&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">overlay</span><span style="color: #007700">:&nbsp;function(</span><span style="color: #0000BB">record</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;</span><span style="color: #0000BB">me&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">this</span><span style="color: #007700">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">Ext</span><span style="color: #007700">.</span><span style="color: #0000BB">iterate</span><span style="color: #007700">(</span><span style="color: #0000BB">record</span><span style="color: #007700">,&nbsp;function(</span><span style="color: #0000BB">index</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">value</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">fields</span><span style="color: #007700">)&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(</span><span style="color: #0000BB">value&nbsp;</span><span style="color: #007700">!=&nbsp;</span><span style="color: #0000BB">null&nbsp;</span><span style="color: #007700">&amp;&amp;&nbsp;(</span><span style="color: #0000BB">me</span><span style="color: #007700">.</span><span style="color: #0000BB">data</span><span style="color: #007700">&#91;</span><span style="color: #0000BB">index</span><span style="color: #007700">&#93;&nbsp;!=&nbsp;</span><span style="color: #0000BB">undefined&nbsp;</span><span style="color: #007700">||&nbsp;</span><span style="color: #0000BB">me</span><span style="color: #007700">.</span><span style="color: #0000BB">data</span><span style="color: #007700">&#91;</span><span style="color: #0000BB">index</span><span style="color: #007700">&#93;&nbsp;==&nbsp;</span><span style="color: #0000BB">null</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000BB">me</span><span style="color: #007700">.</span><span style="color: #0000BB">set</span><span style="color: #007700">(</span><span style="color: #0000BB">index</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">value</span><span style="color: #007700">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />});&nbsp;<br /></span><span style="color: #0000BB"></span>
</span>
</code></code><hr />
</div> Use like so:<br />
<div class="bbcode_container">
	<div class="bbcode_description">PHP Code:</div>
	<hr /><code class="bbcode_code"><code><span style="color: #000000">
<span style="color: #0000BB">recordB</span><span style="color: #007700">.</span><span style="color: #0000BB">overlay</span><span style="color: #007700">(</span><span style="color: #0000BB">recordA</span><span style="color: #007700">);&nbsp;<br /></span><span style="color: #0000BB"></span>
</span>
</code></code><hr />
</div> This will take all matching name and not empy fields from recordA and set them to recordB.<br />
<br />
//</div>

 ]]></content:encoded>
			<category domain="http://www.sencha.com/forum/forumdisplay.php?82-Ext-User-Extensions-and-Plugins">Ext:User Extensions and Plugins</category>
			<dc:creator>predator</dc:creator>
			<guid isPermaLink="true">http://www.sencha.com/forum/showthread.php?262012-Ext.data.Model.overlay(record)</guid>
		</item>
	</channel>
</rss>
