0

我有一个从 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 不会导致回发。我考虑过抓取通过 Page.Onload 事件发送的 sender 对象或 system.eventargs 变量,但我不确定我是否可以对这些做任何事情。有任何想法吗?

4

1 回答 1

0

我会将页面本身内的列的排序顺序维护为隐藏的输入字段(指定 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 中进行这项工作,如果您打算在数据库级别进行排序,则需要执行动态查询。这与MYSQL 中的 post Dynamic Column name类似,但为了将这一切保持在一起,MySQL 中执行动态 SQL 的模式如下所示:

SET @qry = 'your query here';
PREPARE stmt FROM @qry;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
于 2009-09-21T03:20:30.797 回答