【问题标题】:How to make jQGrid ignore an inner table如何使 jQGrid 忽略内部表
【发布时间】:2017-03-06 10:11:18
【问题描述】:

在我的工作中,我们有一些非常旧的数据表,我们正在尝试将它们转换为 jqGrid。遗憾的是,并非所有的表都可以在 jqGrid 中从头开始重新创建,因此我们使用 tableToGrid 将表与 jqGrid 中的数据进行转换,并且至少具有一些功能,如排序和 css 样式。 但是我们发现我们的一个表有问题:这个表在某些情况下使用嵌套表显示信息,在这种情况下,tableToGrid 崩溃了,因为他无法检测到内表的 td 不属于外部表,所以他添加到外部表。结果?一团糟。 所以,我的问题是:考虑到限制(例如,不能使用 SubGrid,因为日期已经显示在 html 上),你们中的任何人都知道告诉 tableToGrid 忽略“内部”表的方法吗?我认为这里的关键是找到一种方法来为外部和内部表调用 tableToGrid,而无需干预另一个调用。

问候

【问题讨论】:

    标签: jquery html css jqgrid


    【解决方案1】:

    既然你说

    一种告诉 tableToGrid 忽略“内部”表格的方法

    您似乎对保留和使用它们的内容不感兴趣(至少在转换操作期间)。

    因此,您可以只在转换操作之前插入

    $('table table').remove();
    

    显然,您可能需要写出比table table 更精确的内容,具体取决于整个上下文。

    【讨论】:

      【解决方案2】:

      您的问题的主要原因是tableToGrid 的使用,这是多年前创建的 jqGrid 插件,几乎没有更改或维护。例如,插件在循环中使用addRowData(请参阅the line),它的运行速度非常慢。你描述的问题的根源是代码的the line

      jQuery('td', jQuery(this)).each(function() {
      

      可以改成

      jQuery(this).children('td').each(function() {
      

      例如或只是

      jQuery(this.cells).each(function() {
      

      (有关每个<tr>cells 集合,请参见here。可以只使用this.cells[i] 访问行的第i 个单元格的innerHTML

      tableToGrid 的许多代码部分都面向非常特定的网格结构,其中复选框允许将此类网格转换为带有multiselect: true 选项的网格。是你需要的吗?

      tableToGrid 的代码由两个主要部分组成:第一个部分从现有的<table> 中读取数据并将数据保存在项目数组中。第二部分使用数据创建网格。如果您知道现有表的结构,那么您可以以非常简单的方式创建tableToGrid 的替换。我建议你这样做。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-12-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多