Wie mache ich eine benutzerdefinierte Sortierung für ein Geschäft in ExtJS?
Momentan habe ich den code unten, der überschreibt die Sortierung für alle Filialen. Was ich tun müssen, ist erstellen Sie eine Sortierung für eine einzelne Geschäft. Wie mache ich das?
Ext.override(Ext.data.Store, {
//override
createSortFunction: function (field, direction) {
direction = direction || "ASC";
var directionModifier = direction.toUpperCase() == "DESC" ? -1 : 1;
var sortType = this.fields.get(field).sortType;
//create a comparison function. Takes 2 records, returns 1 if record 1 is greater,
//-1 if record 2 is greater or 0 if they are equal
return function (r1, r2) {
var v1;
var v2;
if (field == 'Registered') {
v1 = sortType(r1.data['AircraftNeedsRegistered']);
v2 = sortType(r2.data['AircraftNeedsRegistered']);
if (r1.data['AircraftNeedsRegistered'])
r1.data['Register'] = !r1.data['Register'];
if (r2.data['AircraftNeedsRegistered'])
r2.data['Register'] = !r2.data['Register'];
//store.getAt(rowIndex).data['Registered'] = true;
}
else {
v1 = sortType(r1.data[field]);
v2 = sortType(r2.data[field]);
}
//To perform case insensitive sort
if (v1.toLowerCase) {
v1 = v1.toLowerCase();
v2 = v2.toLowerCase();
}
return directionModifier * (v1 > v2 ? 1 : (v1 < v2 ? -1 : 0));
};
}
Was ich umsetzen will, ist so etwas wie dieses:
function AircraftStore() {
return new Ext.data.JsonStore(Ext.apply({
url: AVRMS.ROOT_CONTEXT + "/ssl/json/general/GetAircraftByOwnerId.aspx",
idProperty: 'OwnerOid',
baseParams: { OwnerOid: 0 },
fields: ['AircraftOid', 'NNumber', 'Make', 'Model', 'Seats', 'RegistrationType', 'Airworthy', 'IsFaaAirport', 'AirworthyString', 'IsFaaAirportString', 'Airport', 'AircraftNeedsRegistered', 'Register'],
sort: function (field, direction) {
return customSort(field, direction);
}
}));
};
function customSort(field,direction) {
//What do I put here?
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin nicht sicher, ob ich verstanden den Zweck der code richtig, aber ich glaube, der gleiche Effekt kann erreicht werden, indem Sie den folgenden code (sorry, ich habe es noch nicht getestet aber es sollte funktionieren).
Wenn dies nicht der Erreichung Ihrer gewünschten Verhalten, weil ich etwas verpasst haben, können Sie nur überschreiben Sie die
createSortFunction
stattsort
. Da jedochcreateSortFunction
soll privat sein, ist es besser zu handhaben benutzerdefinierte Logik durch überschreibensort
. Jedenfalls, wenn Sie lieber mit Ihrem ersten Ansatz, Ihre AircraftStore sollte wie folgt Aussehen: