我一直在尝试在滚动时实现具有固定标题的gridview,但也允许在单击标题列时进行排序.搜索了一段时间后,我在网上找到了一个很好的解决方案,在我的网站上完美运行.如果您有相同的问题,请在此处查看 - http://www.aspsnippets.com/Articles/Scrollable-GridView-with-Fixed-Headers-and-Client-Side-Sorting-using-jQuery-in-ASP. Net.aspx
忽略页面上的示例,当我尝试对它进行排序时它不起作用但是当我把它放在我自己的页面上时它是有用的.
这是我的问题:我希望能够通过多个列进行排序,并且站点上的代码只允许对单个列进行排序.有没有人有关于如何添加第二级排序的建议?
这是我的代码:
<script type = "text/javascript">
$(document).ready(function () {
$("#<%=ChangedUPCs2.ClientID%>").tablesorter();
SetDefaultSortOrder();
});
function Sort(cell, sortOrder) {
var sorting = [[cell.cellIndex, sortOrder]];
$("#<%=ChangedUPCs2.ClientID%>").trigger("sorton", [sorting]);
if (sortOrder == 0) {
sortOrder = 1;
cell.className = "sortDesc";
}
else {
sortOrder = 0;
cell.className = "sortAsc";
}
cell.setAttribute("onclick", "Sort(this, " + sortOrder + ")");
cell.onclick = function () { Sort(this, sortOrder); };
document.getElementById("container").scrollTop = 0;
}
function SetDefaultSortOrder() {
var gvHeader = document.getElementById("dummyHeader");
var headers = gvHeader.getElementsByTagName("TH");
for …Run Code Online (Sandbox Code Playgroud) 我有存储过程,返回动态排序的结果.父文件夹(这是用于内容管理)具有RankTypeID字段,允许按Rank(0)排序,开始日期按升序排序(1),开始日期按降序排列(2),文档标题(3)
Rank是一个整数,date是smalldatetime,title是nvarchar.
...
ORDER BY
Case Parent.RankTypeID
When 0 Then dbo.Folders.Rank
When 1 Then Cast(dbo.Documents.SortableDateStart As bigint)
When 2 Then (1 - Cast(dbo.Documents.SortableDateStart As bigint))
When 3 Then Cast(dbo.Documents.Title as sql_variant)
End
Run Code Online (Sandbox Code Playgroud)
我将SortableDateStart设置为计算列,以获取DateStart smalldatetime列并将其转换为bigit进行排序.它需要一个ISO8601日期(专为xml使用而设计,也可以方便排序)并替换T,:和 -
(replace(replace(replace(CONVERT([varchar](16),[DateStart],(126)),'T',''),'-',''),':',''))
Run Code Online (Sandbox Code Playgroud)
这有点难看.有一个更好的方法吗?我也愿意采用更好的方法来处理这种动态排序.
编辑:测试数据设置
DECLARE @Temp TABLE
(
[Rank] int,
[Title] nvarchar(100),
[DateStart] datetime
)
INSERT into @Temp
SELECT 1, 'title1', '1/1/2010 10:01:00AM'
UNION
SELECT 2, 'atitle1', '1/1/2010 10:03:00AM'
UNION
SELECT 3, 'title1', '1/1/2010 10:10:00AM'
UNION
SELECT 4, 'btitle1', '1/1/2010 10:04:00AM'
UNION
SELECT 10, 'title1', '1/1/2010 …Run Code Online (Sandbox Code Playgroud)