В настоящее время я использую пользовательскую функцию сортировки на dgrid (вставленную ниже). Он не меняет сортировку резко, просто сортирует один конкретный столбец однозначно и сортирует другие регистро-независимые. Я хотел бы добавить вторичный сортировку по столбцу с именем «запланировано», который будет добавлен в сортировку, когда будет отсортирован любой другой столбец. Я просто не знаю, как это сделать. Я видел, как переопределить сортировку для сортировки по двум столбцам, но не тогда, когда пользовательский сортировка находится в игре. Вторичная сортировка всегда будет там, неважно, какой другой столбец щелкнут.dgrid custom sort со вторичным столбцом сортировки
Для справки Я запускаю додзё 1.10 и dgrid 1.0. Данные поступают из хранилища RequestMemory DStore, и я бы предпочел, чтобы этот вид произошел на сетке, а не на уровне магазина. Любая помощь будет оценена по достоинству.
currGrid.on('dgrid-sort', function (event) {
event.preventDefault();
var sort = event.sort[0];
currGrid.set('sort', function (a, b) {
if (sort.property == "thisField") {
//special sort for thisField
if (a[sort.property] !== 'undefined' && typeof a[sort.property] == "string") {
var colorA = a[sort.property].split("|");
var aValue = colorA[0].toLowerCase();
}
if (b[sort.property] !== 'undefined' && typeof b[sort.property] == "string") {
var colorB = b[sort.property].split("|");
var bValue = colorB[0].toLowerCase();
}
if (String(aValue) == String(bValue)) {
var result = 0;
} else if (dojo.string.trim(aValue) == "") {
var result = true ? 1 : -1;
} else if (dojo.string.trim(bValue) == "") {
var result = true ? -1 : 1;
} else {
var result = aValue > bValue ? 1 : -1;
}
return result * (sort.descending ? -1 : 1);
} else {
//Sort for all other fields same as always (except toLowerCase)
if (a[sort.property] !== 'undefined' && typeof a[sort.property] == "string") {
var aValue = a[sort.property].toLowerCase();
} else {
var aValue = "";
}
if (b[sort.property] !== 'undefined' && typeof b[sort.property] == "string") {
var bValue = b[sort.property].toLowerCase();
} else {
var bValue = "";
}
var result = aValue > bValue ? 1 : -1;
return result * (sort.descending ? -1 : 1);
}
});
currGrid.updateSortArrow(event.sort, true);
});
currGrid.startup();
@t Kambi Извините за задержку, возвращаясь к вам на это, я только что проверил это и он прекрасно работает на первом щелчке на сортировать любой столбец. Тем не менее, он меняет вид запланированного столбца, когда другой столбец сортируется в противоположном направлении. Я хочу, чтобы плановый (вторичный столбец сортировки) всегда поднимался. Я попытался изменить 'sortSet.push ({property:" schedule "});' to sortSet.push ({property: "schedule", descending: false}); и это не сделало этого. В моем первоначальном вопросе я, вероятно, не был ясно из этого, но если вы поможете мне разобраться, я бы очень признателен. – BLWedge09
Сортировка расписания всегда возрастает, так как мы не устанавливаем нисходящее свойство для этой опции. Однако он будет иметь второй приоритет по сравнению с другим вариантом сортировки. Если вы хотите, чтобы «расписание» было вашим первым приоритетом, сначала добавьте расписание сортировки, а затем другой вид в «sortSet». –
Да, вы совершенно правы. Столбец, который я нажал, содержал скрытые в нем данные, которые вызывали сортировку по-другому, чем я планировал. Все работает так, как сейчас. Спасибо @T Kambi – BLWedge09