Вопрос: почему не сделать пересортировку таблиц скриптом на уровне браузера, а не на уровне сервера, как сейчас? Вот код, который делает подобную вещь.
Код
/** Функция производит пересортировку произвольной таблицы, выведенной на экран браузера. Повторный клик выполняет обратную сортировку.
@param El - Идентификатор сортируемой таблицы
@param cell_ident - Номер сортируемой ячейки.
*/
function resort(El, cell_ident)
{
if(sort_cell == cell_ident)
{
sort_order = 1 - sort_order;
}
else
{
sort_order = 0;
sort_cell = cell_ident;
}
have_changes = true;
tbl = document.getElementById(El);
tbl_size = tbl.rows.length;
while(have_changes)
{
have_changes = false;
for(i = 1;i < tbl_size - 1;i = i + 1)
{
need_move = 0;
if(sort_order == 0)
{
need_move = tbl.rows[i].cells[sort_cell].innerHTML < tbl.rows[i + 1].cells[sort_cell].innerHTML;
}
else
{
need_move = tbl.rows[i].cells[sort_cell].innerHTML > tbl.rows[i + 1].cells[sort_cell].innerHTML;
}
if(need_move)
{
have_changes = true;
for(j = 1;j < tbl.rows[i].cells.length; j++)
{
val = tbl.rows[i].cells[j].innerHTML;
tbl.rows[i].cells[j].innerHTML = tbl.rows[i + 1].cells[j].innerHTML;
tbl.rows[i + 1].cells[j].innerHTML = val;
}
}
}
}
}
@param El - Идентификатор сортируемой таблицы
@param cell_ident - Номер сортируемой ячейки.
*/
function resort(El, cell_ident)
{
if(sort_cell == cell_ident)
{
sort_order = 1 - sort_order;
}
else
{
sort_order = 0;
sort_cell = cell_ident;
}
have_changes = true;
tbl = document.getElementById(El);
tbl_size = tbl.rows.length;
while(have_changes)
{
have_changes = false;
for(i = 1;i < tbl_size - 1;i = i + 1)
{
need_move = 0;
if(sort_order == 0)
{
need_move = tbl.rows[i].cells[sort_cell].innerHTML < tbl.rows[i + 1].cells[sort_cell].innerHTML;
}
else
{
need_move = tbl.rows[i].cells[sort_cell].innerHTML > tbl.rows[i + 1].cells[sort_cell].innerHTML;
}
if(need_move)
{
have_changes = true;
for(j = 1;j < tbl.rows[i].cells.length; j++)
{
val = tbl.rows[i].cells[j].innerHTML;
tbl.rows[i].cells[j].innerHTML = tbl.rows[i + 1].cells[j].innerHTML;
tbl.rows[i + 1].cells[j].innerHTML = val;
}
}
}
}
}
Работает во всех браузерах, кроме Конкверора (просто не проверял).
Конечно, этому скрипту требуется доработка для нужд Бутсы, так как сейчас он просто проверяет innerHTML на больше-меньше. Но эта доработка не слишком сложная - требуется добавить массив функций проверки, сортированный по индексу колонки.
Хотя бы немного нагрузку на страницу ростера такой механизм снизит.
Минус понятен - F5 сбросит сортировку в дефолт. Но, думаю, это не слишком критично.