我正在从Perl编写Multimarkdown来创建一个HTML表格。
我想知道是否有一种简单方式使表动态化,即允许查看者通过单击列标题对其进行排序,甚至通过输入简单规则来过滤记录。
我真的不懂HTML。我在Perl编码,只生成HTML(实际上,Multimarkdown转换为HTML),以便很好地输出一些数据。我之所以提到这一点,因为我确信有很多方法可以创建漂亮的动态表格,但我真的很想找到一个简单的表格。
答案 0 :(得分:2)
简单方式是使用已经支持此类功能的工具包/库。
(快速谷歌搜索“排序javascript表”出现Table with sorting/filtering from JavaScript Toolbox,Sorting HTML Tables using JavaScript (more of example)和jQuery plugin: Tablesorter 2.0。)
AJAX是一种可用于动态获取数据的机制 - 但是,如果表中已经存在所有数据和/或表不需要分页,那么它就是过度杀伤。这两种方法都要求启用了客户端JavaScript。 (非客户端的替代方案是回发并让服务器完成工作并生成新的HTML。但那就是Web一点哦 - - )
CSS (Cascading Style Sheets)仅用于应用颜色,背景图像,字体或边框等样式(CSS选择器可以基于CSS类工作,这些类通常在HTML元素类属性中提供。文档只是声明一些预先定义的CSS类名称是由动态添加的 - 由JavaScript - 因此可以轻松地“选择”样式 - 例如,转动排序列石灰绿色)。然而, CSS本身无法控制排序或过滤。
Daxim建议Stuart Langridge's sorttable,在以下SO问题中讨论: how to do client side sorting using querystring in hyperlink associated with the table header using Perl?(如果此编辑有用,请在那里进行投票: - )
快乐的编码。
答案 1 :(得分:0)
Yahoo YUI的数据表控件具有内置列排序功能。
YUI有大量的js函数你可以调用和使用。
答案 2 :(得分:0)
我使用了以下代码:
$sql= "select * from table";
$sth = $dbh->prepare($sql);
$sth->execute() or die "Cannot execute sth: $DBI::errstr";
my $fields = join(',', @{ $sth->{NAME} });
my @th = split(',',$fields);
print '<table><thead><tr>';
foreach(@th){
print '<th>'.$_.'</th>';
}
print '</tr></thead><tbody>';
while (my @next_row_fields = $sth->fetchrow_array()) {
print '<tr>';
foreach(@next_row_fields){
print '<td>'.$_.'</td>';
}
print '</tr>';
}
print '</tbody></table>';
答案 3 :(得分:-2)
JQuery是一个Javascript库,可以让你做各种简洁的前端工作,包括表格排序。使用它(它有点像php)并不坏,你不必了解html / css(虽然从来没有伤害过)。