Определить в порядке SQL по ASC или DSC - PullRequest
0 голосов
/ 21 сентября 2009

У меня есть список данных, который получает значения из базы данных MySQL. Этот список данных может быть отсортирован по различным значениям столбца, таким как «Заголовок», «Автор», «Дата публикации» и т. Д. Чтобы определить, по какому значению сортировать, значение вставляется в строку запроса.

т.е. www.web.com/default.aspx?order_by=title

Я также определяю, нужно ли заказывать в порядке возрастания или убывания.

т.е. www.web.com/default.aspx?order_by=title&direction=asc

Я хочу иметь возможность установить направление на asc, если

(рабочий пример того, что я собираюсь сделать, можно найти на

http://www.milwaukeejobs.com/jobs/category/Information-Technology-Internet-Web-Development/Milwaukee,-WI/1306

* Обратите внимание, если вы щелкнете по значениям сортировки, таким как «По дате», для него установлено значение «ASC», если вы щелкнете по нему снова, для него будет установлено значение «DSC»; Я хотел бы сделать это на моем сайте *)

Я не уверен, как это сделать. Я думал о If Page.IsPostback условии, но нажатие на URL не вызывает обратную передачу. Я думал о получении объекта отправителя или переменных system.eventargs, которые отправляются через событие Page.Onload, но я не уверен, смогу ли я что-нибудь сделать с ними. Есть идеи?

1 Ответ

0 голосов
/ 21 сентября 2009

Я бы поддерживал порядок сортировки столбцов внутри самой страницы как скрытые поля ввода (с указанием runat = "server"). При нажатии на ссылку, вы можете изменить направление этого поля до обратной передачи. При этом нужно проверять состояние IsPostBack.

Примерно так:

<input type="hidden" id="TitleSortOrder" Runat="server" />
<asp:LinkButton id="TitleHeader" onclick="return(FlipSortOrder('Title'));" />

function FlipSortOrder(type)
{
  var sortOrder = document.getElementById(type + "SortOrder");
  sortOrder.value = sortOrder.value === "ASC" ? "DESC" : "ASC";
  return true;
}

В серверном коде вы можете ссылаться на значение направления сортировки заголовка, используя свойство TitleSortOrder.Value.

Чтобы это работало в MySQL, вам нужно будет выполнить динамический запрос, если вы хотите, чтобы сортировка происходила на уровне базы данных. Это похоже на post имя динамического столбца в MYSQL , но в интересах сохранения всего этого шаблон выполнения динамического SQL в MySQL выглядит следующим образом:

SET @qry = 'your query here';
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
...