PDA

View Full Version : Ext.grid.selectionModel default sort



Goetz Eisenfaust
16 Sep 2010, 5:12 AM
Hi all,

i got a table by using a gridPanel with a selectionModel. Onload the first column is sorted. How can i set that one of the other columns is sorted onload? Is there a defaultsort parameter? I couldn't find any.

Thanks for help Goetz

Animal
16 Sep 2010, 5:29 AM
http://dev.sencha.com/deploy/dev/docs/?class=Ext.data.Store&member=sortInfo

Goetz Eisenfaust
16 Sep 2010, 5:52 AM
I've allready tested 'sortInfo', but it doesn't work.

Here is the code, maybe i did a mistake:



new Ext.grid.GridPanel({// Bereich Für Buttons und Tabelle links
border: false,
store: applikation_store,
id: 'grid',
layout: 'fit',
autoWidth: true,
stripeRows: true,
enableDragDrop: false,
enableColumnMove: false,
enableHdMenu: false,
draggable: false,
autoExpandColumn: 'applikation',
autoExpandMin: 90,
sortInfo: {
field: 'applikation',
direction: 'DESC'
},
loadmask: {
msg: 'Loading data...'
},
tbar: [{
// add
text: 'Neues Formular',// erster Button
handler: function(){
checkLogin();
Ext.Ajax.request({
waitMsg: 'Creating Application',
url: 'php/admin_applikation.php',
method: 'POST',
params: {
action: 'CREATEAPPL'
},
success: function(response, options){
grid.getStore().reload();
},
failure: function(response, options){
Ext.Msg.alert('Fehler',
'Es konnte kein weiteres Formular angelegt werden!',
Ext.emptyFn);
}
})
}
}, '-', {
text: 'Aktualisiern',// zweiter Button
handler: function(){
checkLogin();
grid.getStore().reload();
}
}, '-', {
text: 'Ausgewählte löschen',// dritter Button
handler: function(){
checkLogin();
var sm = grid.selModel;
var row = sm.getSelections();
if (sm.getCount() == 0) {// Fehlermeldung beim Löschen(nichts ausgewählt)
Ext.Msg.alert('Fehler',
'Bitte wählen Sie mindestens ein Formular aus, dass gelöscht werden soll!',
Ext.emptFn);
}
else
if (sm.getCount() == 1) {// Bestätitungsabfrage beim Löschen
Ext.Msg.confirm('Bestätigung',
'Soll das Formular "' + row[0].get('name')
+ '" wirklich entfernt werden?',
function(btn){
if (btn == 'yes') {
// delete the entry
var aID = row[0].get('aID');
center.remove(aID);
Ext.Ajax.request({
waitMsg: 'Deleting application',
url: 'php/admin_applikation.php',
method: 'POST',
params: {
action: 'DELETEAPPL',
aID: row[0].get('aID')
},
success: function(response){
grid.getStore().reload();
}
})
}
});
}
else {// Fehlermeldung beim Löschen(Mehrfachauswahl) ist nicht möglich
Ext.Msg.alert('Fehler', 'Das Formular konnte nicht gelöscht werden.');
}
}
}],
sm: new Ext.grid.RowSelectionModel({// Auswahltabelle links
singleSelect: true
}),
columns: [{
header: '#',
width: 35,
dataIndex: 'aID',
sortable: true
}, {
header: "Formular",
width: 100,
sortable: true,
id: 'applikation',
dataIndex: 'name'
}, {
header: "Verantwortlicher",
width: 100,
sortable: false,
dataIndex: 'applv'
}, {
header: "Freigeschaltet?",
width: 100,
sortable: true,
dataIndex: 'valid'
}]
})

Goetz Eisenfaust
16 Sep 2010, 5:59 AM
The SortInfo parameter didn't work.
Maybe i did a mistake? Here is the code:



window.viewport = new Ext.Viewport({
layout: 'border',
items: [{// Formularfenster links
title: 'Antragsformulare',
region: 'west',
id: 'west',
width: 400,
minSize: 400,
maxSize: 600,
split: true,
layout: 'fit',
items: new Ext.grid.GridPanel({// Bereich Für Buttons und Tabelle links
border: false,
store: applikation_store,
id: 'grid',
layout: 'fit',
autoWidth: true,
stripeRows: true,
enableDragDrop: false,
enableColumnMove: false,
enableHdMenu: false,
draggable: false,
autoExpandColumn: 'applikation',
autoExpandMin: 90,
sortInfo: {
field: 'applikation',
direction: 'DESC'
},
loadmask: {
msg: 'Loading data...'
},
tbar: [{
// add
text: 'Neues Formular',// erster Button
handler: function(){
checkLogin();
Ext.Ajax.request({
waitMsg: 'Creating Application',
url: 'php/admin_applikation.php',
method: 'POST',
params: {
action: 'CREATEAPPL'
},
success: function(response, options){
grid.getStore().reload();
},
failure: function(response, options){
Ext.Msg.alert('Fehler',
'Es konnte kein weiteres Formular angelegt werden!',
Ext.emptyFn);
}
})
}
}, '-', {
text: 'Aktualisiern',// zweiter Button
handler: function(){
checkLogin();
grid.getStore().reload();
}
}, '-', {
text: 'Ausgewählte löschen',// dritter Button
handler: function(){
checkLogin();
var sm = grid.selModel;
var row = sm.getSelections();
if (sm.getCount() == 0) {// Fehlermeldung beim Löschen(nichts ausgewählt)
Ext.Msg.alert('Fehler',
'Bitte wählen Sie mindestens ein Formular aus, dass gelöscht werden soll!',
Ext.emptFn);
}
else
if (sm.getCount() == 1) {// Bestätitungsabfrage beim Löschen
Ext.Msg.confirm('Bestätigung',
'Soll das Formular "' + row[0].get('name')
+ '" wirklich entfernt werden?',
function(btn){
if (btn == 'yes') {
// delete the entry
var aID = row[0].get('aID');
center.remove(aID);
Ext.Ajax.request({
waitMsg: 'Deleting application',
url: 'php/admin_applikation.php',
method: 'POST',
params: {
action: 'DELETEAPPL',
aID: row[0].get('aID')
},
success: function(response){
grid.getStore().reload();
}
})
}
});
}
else {// Fehlermeldung beim Löschen(Mehrfachauswahl) ist nicht möglich
Ext.Msg.alert('Fehler', 'Das Formular konnte nicht gelöscht werden.');
}
}
}],
sm: new Ext.grid.RowSelectionModel({// Auswahltabelle links
singleSelect: true
}),
columns: [{
header: '#',
width: 35,
dataIndex: 'aID',
sortable: true
}, {
header: "Formular",
width: 100,
sortable: true,
id: 'applikation',
dataIndex: 'name'
}, {
header: "Verantwortlicher",
width: 100,
sortable: false,
dataIndex: 'applv'
}, {
header: "Freigeschaltet?",
width: 100,
sortable: true,
dataIndex: 'valid'
}]
})
}, {// Formularfenster rechts
region: 'center',
id: 'center',
xtype: 'tabpanel',
activeTab: 0,
margins: '0 0 0 5',
autoScroll: true,
enableTabScroll: true,
style: 'left: 410px; top: 0px; width: 860px;position: absolute;',
border: false,
items: [{// Willkommensmeldung
xtype: 'panel',
title: 'Willkommen',
html: '<div class="x-form-item" style="margin:20px">Willkommen in der Applikationsadministration des Interim Approval Workflow<br /><br /><br />F&uuml;r eine genaue Erl&auml;uterung der Applikationsadministration schauen Sie bitte in den <a href="http://m4fxhpsrl1i2/kb/" target="_blank">HelpDesk</a>.<br />Nach einem erfolgreichen Login rufen Sie die Kategorie <a href="http://m4fxhpsrl1i2/kb/78/" target="_blank">Applikationsadministration M&uuml;nster</a> auf.<br /><br />Wenn Sie noch keinen Zugang zum HelpDesk besitzen, wenden Sie sich bitte an das PUcco-Team in M&uuml;nster.</div>'
}]
}]
});

troseberry
16 Sep 2010, 6:42 AM
I believe the sortInfo is a configuration of the data Store not of the GridPanel component. Try moving the config. Have you perhaps looked into the remoteSort option? Since we cant see the code for your "applikation_store" Its hard to say what might be a better option "local" or "remote" sort on load.

Goetz Eisenfaust
16 Sep 2010, 6:58 AM
Yes, that's it. I've put the sortInfo in the 'applikation_store' and it works. :-)

Thanks a lot,

Goetz