選択したフィルターに応じて動的に構築されるテーブルに取り組んでいます。現在、クリックした行で並べ替えることができます。問題は、別の行をクリックしたときにソートする最初の行が必要であるため、クリックした2番目の行が最初の行の範囲内でソートされるようにすることです。例では、名と姓の 2 つの列があります。
**FirstName** **LastName**
Bob Zimmer
Bob Anderson
Kathy Walege
Kathy Ball
たとえば、最初の名前の行をクリックするとします。名前はすでに順番に並べられているため、同じままです。しかし、姓の行をクリックすると、次のようになります。
**FirstName** **LastName**
Bob Anderson
Bob Zimmer
Kathy Ball
Kathy Walege
私は現在それを機能させているので、一度に1列ずつしかソートされません。これを自分のコードで動作させるために、javascript と vb.net の両方を使用しています。
これがJavaScriptです:
function SortColumn(col)
{
__doPostBack('SortBy',col);
}
JavaScript 関数を呼び出す vb 関数は次のとおりです。
Private Function AddSortLinkToColumn(ByVal sSortColumn As String) As String
Dim sVal As String = ""
sVal = "<a href=""javascript:SortColumn('" & sSortColumn & "');""><font face=""Webdings"">"
If m_sSort <> "" AndAlso Split(m_sSort, "-")(0) = sSortColumn AndAlso m_sSortDrxn = "ASC" Then
sVal &= "5"
Else
sVal &= "6"
End If
sVal &= "</font></a>"
Return sVal
End Function
これは現在、クリックされている列を取得し、それをグローバルソート変数と照合しています。それらが一致すると、上向き矢印が表示されます。失敗すると、下向き矢印が表示されます。
クリックされた最初の列を追跡する必要があることはわかっていますが、その方法がわかりません。ソートに別の列を追加して、vb.net側とjavascript側で試しましたが、最初の列の値を保持できない場合は何の役にも立ちません!
最初の列の並べ替えを維持し、2 番目の列でも並べ替えるにはどうすればよいですか? どんな助けでも大歓迎です!
アップデート
以下にリストされている回答の助けを借りて、私はついにこれを機能させました! コードは次のとおりです。
function SortColumn(col)
{
<% if m_sSort = nothing then %>
__doPostBack('SortBy', col);
<% else %>
__doPostBack('SortBy', document.getElementById("SortField").value + "," + col);
<% end if %>
}
m_sSort は、vb.net 側のパブリック変数でした。「SortField」は、m_sSort 値が格納されていた隠しフィールドの名前でした。