如何对数据表进行排序,如FogBugz案例表

时间:2009-01-22 21:28:51

标签: sorting fogbugz

有谁看过fogbugz如何分类他们的桌子?当您单击对列进行排序时,它们实际上会将表拆分为许多包含每种信息类别的小表。

想知道是否有人知道他们是怎么做到的?

希望实现此功能。

如果你仔细查看案例页面,然后排序就可以看出我的意思了。

任何帮助都很棒!

仍然没有想出这个。

编辑: @Peter,我不希望每次单击标题标题进行排序时都回发并重新创建表格。我也想知道它们是否是一个通用的解决方案。如果我点击标题进行排序,通过javascript的方式,它将“一个”表分成许多,我想知道它们是否是任何通用解决方案,因为它只是查看排序表的更好方法。

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

5 个答案:

答案 0 :(得分:8)

是的,Rich得到了它(我很久以前将这个功能编入FogBugz)。

如果你必须在客户端上执行此操作,你别无选择,只能对数据进行排序,遍历它,在表行之后生成表格行,每次你点击一个新的排序值,你就会创建一个新的thead w /信息。

老实说,对于这个jQuery插件来说,这将是一个很酷的修改:http://tablesorter.com/docs/,你可以利用他们工作的很多。如果您打算花时间创建一般解决方案,也可以让社区访问它。

答案 1 :(得分:2)

在没有具体了解Fog Creek如何实现这一点的情况下,我将这样做的方法是输出一个表头,然后遍历列表,每次组值更改时输出一个页脚和一个新的标题。

答案 2 :(得分:1)

不确定您的期望是什么答案。对此进行SQL查询只会在所选列上使用排序,每次此值更改时,UI都会启动新表。

点击优先级列后,这是FogBugz的屏幕截图。

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

当然,开始新表对每一列都没有意义(标题,案例#)。


编辑:如果我理解正确,您正在寻找一种在不加载新页面的情况下如何在浏览器中执行此操作的方法。如果是这种情况,我会建议至少一些服务器端支持,它将以正确的顺序返回您的数据,并为子表正确构建(在xml / json /您使用的任何内容)。您的javascript将使用此数据重新创建表。我确信拥有更多web-ui经验的其他人将为您提供更好的答案。

答案 3 :(得分:0)

我使用了Kryogenix的Sortable Tables script并获得了一些不错的结果。

答案 4 :(得分:0)

我不知道它是否相关,但我们将查询结果存储在SQL中的临时表中,然后引用current-row-less-one以查看Category是否已更改,并在结果。

在某些情况下,我们使用包含

的列“指示”此内容
<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