-
12 Nov 2012 9:37 AM #1
Forcing SubSort on click of Grid header?
Forcing SubSort on click of Grid header?
I'm new to ExtJs, so forgive me if I don't have all the jargon down.
I've got a grid (Ext.grid.Panel) and want the columns to be sortable. Simple enough. However, one of the columns is a date column, and no matter what column the user clicks on, I want to FORCE a sub-sort on the date column.
For instance: If I click on the "name" column, it sorts the grid by name, ascending. But I want to make it sort by name asc / date desc.
I've tried numerous ideas I've found online, and I've come close, but nothing seems to work exactly. If I intercept the headerclick event and call grid.sort() manually, it either is ignoring my call, or is re-sorting by the just the single clicked column after my call.
If I set sortable to false, I can still call the sort in the headerclick event, but then I lose the visible sort direction triangle in the header row (which I still want).
Can anyone help?? I'm getting desperate! Thanks.
-
14 Nov 2012 6:58 AM #2Sencha - Senior Forum Manager
- Join Date
- Mar 2007
- Location
- St. Louis, MO
- Posts
- 33,640
- Vote Rating
- 435
Using the UI, it's only going to be single sort.
Mitchell Simoens @SenchaMitch
Sencha Inc, Senior Forum Manager
________________
http://www.JSONPLint.com - Source to lint your JSONP!
Check out my GitHub, lots of nice things for Ext JS 4 and Sencha Touch 2
https://github.com/mitchellsimoens
Think my support is good? Get more personalized support via a support subscription. https://www.sencha.com/store/
Need more help with your app? Hire Sencha Services services@sencha.com
Want to learn Sencha Touch 2? Check out Sencha Touch in Action that is almost in print!
When posting code, please use BBCode's CODE tags.
-
14 Nov 2012 8:35 AM #3
Working now
Working now
Actually, I figured it out. In a nutshell, I overrode the doSort method for each column I defined with a function that does the sort with my extra sorter (subsort column) tacked on.
for instance, for my first column, called "Poster", if the user clicks the header, this happens:
It sorts by "Poster" in whatever the current direction should be, AND subsorts by the "Date" column descending.Code:doSort: function (state) { var g = this.up('grid'); var ds = g.store; ds.sort([{ property: 'Poster', direction: state }, { property: 'Date', direction: 'DESC' }]); },
I'll try to put together a simple example on jsFiddle.net when I get a chance and share it here. Hopefully this will help others.


Reply With Quote