如何像FogBugz案例表一样对数据表进行排序

6

有人见过fogbugz如何排序表格吗?当您单击以对列进行排序时,它们实际上会将表格分成许多具有每个信息类别的小表格。

想知道是否有人知道他们是如何做到这一点的?

希望实现此功能。

如果您浏览案例页面并进行排序,您就会明白我的意思。

任何帮助都将非常棒!

仍未解决此问题。

编辑: @Peter,我不想在每次单击标题以进行排序时进行postback并重新创建表格。 我还想知道是否有通用解决方案。 顺便说一句,如果我通过javascript单击标题进行排序,则会将“一个”表格分成多个,并且我想知道是否有任何通用解决方案,因为这只是查看已排序表格的更好方法。

编辑: 我确实需要一个javascript排序器,但是如果您直接查看fogbugz的实现,它会产生不同的结果...


一张截图会很有帮助。如果您有链接,请发布链接,否则很难知道您的意思。 - Jon Skeet
你想用什么应用程序重新创建这个?需要更多的细节。 - Craig G
5个回答

8

没错,Rich已经理解了(我很久以前在FogBugz中编写了此功能)。

如果您必须在客户端执行此操作,则除了对数据进行排序,逐个迭代生成表行并且每次遇到新的排序值时创建一个包含适当信息的新theard之外别无选择。

老实说,将这个jQuery插件修改成这样会非常酷:http://tablesorter.com/docs/ ,你可以利用他们大量的工作。如果您要花时间创建通用解决方案,最好让它对社区可用。


3
那位编写这一功能的人亲自回答了问题,太棒了!+1 - Jarrod Dixon

2

不了解 Fog Creek 具体是如何实现的,我会这样做:输出表头,然后遍历列表,每当组值发生变化时,输出页脚和新的表头。


1

不确定您期望什么答案。针对此问题的SQL查询将简单地使用所选列上的排序,UI将在每次更改此值时启动新表。

这是FogBugz带有此排序的屏幕截图,在单击优先级列后。

http://img297.imageshack.us/img297/6974/76755363ee3.png

当然,对于每一列(标题、案例编号)来说,创建新表格并没有意义。


编辑:如果我理解正确,您正在寻找一种在浏览器中完成此操作而无需加载新页面的方法。如果是这样,我建议至少需要一些服务器端支持,以便以正确的顺序返回您的数据,并为子表格(在xml / json /任何您使用的格式中)正确地进行结构化。您的JavaScript将使用此数据重新创建表格。我相信其他具有更多Web UI经验的人会为您提供更好的答案。


0

0

我不知道这是否相关,但我们将查询结果存储在SQL的临时表中,然后引用当前行减一来查看分类是否发生了变化,并在结果集中指示此类变化。

在某些情况下,我们通过包含一个列来"指示"这一点。

<tr><td colspan=999>Category Heading</td></tr>

这样网页就可以将其“注入”到正在构建的表格中。

SELECT Col1, Col2, ...,
       [CATEGORY] = CASE WHEN T1.CategoryCol <> COALESCE(T2.CategoryCol, '')
           THEN '<tr><td colspan=999>' + T1.CategoryCol + '</td></tr>'
           ELSE ''
           END
FROM #MyTempTable AS T1
     LEFT OUTER JOIN #MyTempTable AS T2
         ON T2.ID = T1.ID - 1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接