我正在处理根据选择的过滤器动态构建的表。我目前可以按我单击的任何行进行排序。问题是当我单击另一行时,我需要保留排序依据的第一行,以便我单击的第二行在第一行的范围内进行排序。一个例子我有两列,名字和姓氏。
**FirstName** **LastName**
Bob Zimmer
Bob Anderson
Kathy Walege
Kathy Ball
所以说我点击第一个名字行。它将保持不变,因为名字已经按顺序排列。但是,当我单击姓氏行时,我希望发生以下情况。
**FirstName** **LastName**
Bob Anderson
Bob Zimmer
Kathy Ball
Kathy Walege
我目前正在使用它,因此它一次只能按一列排序。我同时使用 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 端进行了尝试,但如果我不能让第一列值保持不变,这对我没有任何好处!
如何保持第一列的排序,然后按第二列排序?任何帮助将不胜感激!
更新
在下面列出的答案的帮助下,我终于得到了这个工作!这是代码:
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 值的隐藏字段的名称。