【问题标题】:How to align columns between two html tables?如何对齐两个html表之间的列?
【发布时间】:2014-10-21 14:15:25
【问题描述】:

我有以下由 ASP.net GridView 控件生成的表格:

<!-- TOP TABLE WITH DROPDOWNS -->
<table class="taskGridView">
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

<!-- BOTTOM DATA TABLE -->
<table id="yourTasksGV">
    <tr>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
        <th></th>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

显示这个:

如您所见,第一个表格(带有下拉菜单)未与底部表格对齐。

我在windows.load() 事件中有以下代码来匹配两个表之间的每一列:

var firstCol = $("#yourTasksGV").find("tr > td:first").width();
$(".taskGridView").find("tr > td:first").width(firstCol + "px");

var secondCol = $("#yourTasksGV").find("tr > td:second").width();
$(".taskGridView").find("tr > td:second").width(secondCol + "px");

var thirdCol = $("#yourTasksGV").find("tr > td:third").width();
$(".taskGridView").find("tr > td:third").width(thirdCol + "px");

var fourthCol = $("#yourTasksGV").find("tr > td:fourth").width();
$(".taskGridView").find("tr > td:fourth").width(fourthCol + "px");

var fifthCol = $("#yourTasksGV").find("tr > td:fifth").width();
$(".taskGridView").find("tr > td:fifth").width(fifthCol + "px");

var sixthCol = $("#yourTasksGV").find("tr > td:sixth").width();
$(".taskGridView").find("tr > td:sixth").width(sixthCol + "px");

var seventhCol = $("#yourTasksGV").find("tr > td:seventh").width();
$(".taskGridView").find("tr > td:seventh").width(seventhCol + "px");

var eighthCol = $("#yourTasksGV").find("tr > td:eighth").width();
$(".taskGridView").find("tr > td:eighth").width(eighthCol + "px");

var ninthCol = $("#yourTasksGV").find("tr > td:ninth").width();
$(".taskGridView").find("tr > td:ninth").width(ninthCol + "px");

页面加载时,列仍未对齐。

如何修改/添加到现有代码以使两个表都对齐所需的结果?另外,如果任一表中的任何列发生更改,我该如何编码,从下拉选择中选择一个选项,两个表中的列都会调整?

【问题讨论】:

  • 让它们成为同一张桌子?
  • 为此替换整个 Jquery 代码:$("#yourTasksGV").find("tr &gt; td").each(function() { $($(".taskGridView").find("tr &gt; td")[$(this).index()]).width($(this).width()); });
  • 放在onload还是ready函数?我希望它是动态的,所以只要大小改变,另一个表也会改变:)
  • 它只是您代码的简化版本...要遍历所有列,无论有多少...您应该把它放在ready
  • 对,就是:jsfiddle.net/hqhrbzu2

标签: jquery html css asp.net html-table


【解决方案1】:

让两个表完全匹配绝非易事。可以这样做,但是您必须跟踪其中任何一个的更改并在更改时将它们应用于另一个。这将是一场失败的战斗。

我会通过以下两种方式之一来完成:

1) 使用一个插件,为您提供您似乎正在寻找的所有功能,这将节省您的时间和心痛,而且由于前端数据模型,它的运行速度比在后端过滤要快得多。我的首选是 jQuery 数据表。 Here's an example that does column filtering with inputs at the bottom - 但如果需要,很容易将搜索附加到顶部而不是底部。这种方法的美妙之处在于它与后端无关,因此它可以通过 php、java、.net 等运行。

2) 如果您想通过另一种更手动的方法(我不推荐)进行所有过滤,只需制作一个表格,然后将您的过滤器设置为具有自己的类的一行,您可以将其用于样式设置。

【讨论】:

  • 第二个表是一个 GridView,我不知道如何将 DropDownList 过滤作为第二行插入到 GridView 上,这就是为什么我在上面添加了第二个表来进行过滤。对于 #1,表格是如何生成的?
  • 数据表可以像输出一个适当的 html 表(带有thead、tbody 等)并对其应用 jQuery 一样简单。您可以在页面底部看到使该示例运行的代码。
【解决方案2】:

您应该使用 HTML 的 &lt;thead&gt;&lt;tbody&gt; 来保持这些信息一致:

<!-- BOTTOM DATA TABLE -->
<table id="yourTasksGV">
    <thead>
        <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
            <th></th>
        </tr>
        <tr>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>

【讨论】:

  • 他不是这样创建表的...它是由ASP.NET的GridView生成的
  • 肯定有一个html标签,所以我认为刚刚添加它是可能的。
  • 他在问题中的第一句话是:I have the following tables generated by ASP.net GridView control:
猜你喜欢
  • 1970-01-01
  • 2021-07-29
  • 1970-01-01
  • 2015-03-25
  • 2022-01-17
  • 2012-12-26
  • 2015-02-03
  • 1970-01-01
相关资源
最近更新 更多