【问题标题】:How can I simply make my HTML table 'dynamic'?我怎样才能简单地使我的 HTML 表格“动态”?
【发布时间】:2011-05-02 21:34:51
【问题描述】:

我正在用 Perl 编写 Multimarkdown 来创建一个 HTML 表格。

我想知道是否有一种简单的方法可以使表格动态化,即允许查看者通过单击列标题对其进行排序,甚至可以通过输入简单的规则来过滤记录。 p>

我真的不懂 HTML。我在 Perl 中编码并且只生成 HTML(实际上是 Multimarkdown 转换为 HTML)来很好地输出一些数据。我之所以提到这一点,是因为我确信有多种方法可以创建漂亮的动态表格,但我真的在寻找一种简单的方法。

【问题讨论】:

标签: html perl html-table markdown


【解决方案1】:

简单的方法是使用已经支持此类功能的工具包/库。

(Google 快速搜索“排序 javascript 表”出现 Table with sorting/filtering from JavaScript ToolboxSorting HTML Tables using JavaScript (more of example)jQuery plugin: Tablesorter 2.0。)

AJAX 是一种可用于动态获取数据的机制——但是,如果所有数据都已存在于表中和/或表不需要分页,那么它就有点过分了。这两种方法要求启用客户端 JavaScript。 (非客户端的替代方案是回发并让服务器完成工作并生成新的 HTML。但这就是 Web 单点哦 :-)

CSS (Cascading Style Sheets) 仅用于应用颜色、背景图像、字体或边框等样式(CSS 选择器可以基于通常在 HTML 元素 class 属性中提供的 CSS 类工作。文档只是说明一些预定义的 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?(如果此编辑有用,请去那里投票 daxim :-)

愉快的编码。

【讨论】:

  • 您的第一个链接显示了我想要的一切的示例。据我了解,我可以通过简单地使用正确的CSS (?) 使我的表格可排序、可过滤。但是,如前所述,我对这一切都很陌生,所以如果您能详细说明我的下一步应该是什么,我将不胜感激。
  • 不,CSS 根本没有帮助。此 JavaScript 使用 HTML 类名称来确定要为表的哪些部分启用哪些功能。该脚本的文档提到“CSS 类”这一事实相当令人沮丧。
  • 所以我想我确实需要做一些实际的 HTMLing/Javascripting。任何指针?我可以使用的模板?我真的不知道这个。
  • Stuart Langridge 的 sorttable 也可以用于过滤吗(比如这个great example?)
【解决方案2】:

Yahoo YUI 的数据表控件具有内置的列排序功能。

YUI 拥有大量可以调用和使用的 js 函数。

【讨论】:

    【解决方案3】:

    我使用了下面的代码:

    $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>';
    

    【讨论】:

      【解决方案4】:

      JQuery 是一个 Javascript 库,可让您执行各种简洁的前端工作,包括表格排序。使用起来还不错(有点像 php),而且您不必对 html/css 了解太多(尽管这不会有什么坏处)。

      http://jquery.com/

      【讨论】:

      • jQuery 中的任何内容都无助于 OP 可能正在寻找的程度。可能有一些插件会有所帮助,但仅 jQuery 就需要对 HTML 和 JavaScript 有很好的了解才能达到预期的效果。
      • 呸,真不幸。谢谢你告诉我。
      猜你喜欢
      • 2017-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-03-26
      • 1970-01-01
      • 1970-01-01
      • 2020-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多