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 イベントを介して送信される送信者オブジェクトまたは 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 で動的列名を投稿するのと似ていますが、これをすべてまとめるために、MySQL で動的 SQL を実行するパターンは次のようになります。

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