css - 使两个动态填充的表具有相同的高度

标签 css vb.net

我的表单上有两个并排的表格。我正在用同一个数据表的两个 sql 查询填充表。这两个查询完全有可能返回不同数量的结果。如果我只是让表自行调整大小,它们的垂直中心是对齐的,并且每个表的高度似乎是显示该查询数据所需的最小值。这在我表单的其余部分的上下文中看起来很奇怪。

enter image description here 我想要的是让较小的 table 长到与较高的 table 相同的高度。较小表格的内容应顶部对齐,仅在其下方添加空格以使其与较大表格的大小相同。

enter image description here

我对 CSS 不是很熟悉,所以我尝试在我的 vb 代码中使用

Dim Height as String = Math.Max(Convert.ToInt16(table1.Height),Convert.ToInt16(table2.Height))
table1.Height = Height
table2.Height = Height

填满表格后,我收到“输入字符串格式不正确”的错误消息。如果我调试,此时我的表的 Height 属性为空,这可能是导致错误的原因。

有什么方法可以强制我的两个 table 高度相同?我只需要移动我的代码吗?还是该代码永远不会起作用?或者这是需要在 CSS 中处理的事情吗?

最佳答案

我不使用 vb,但您尝试实现的结果可以通过编程方式完成(我使用了 javascript)。

代码背后的想法是找出(当然是动态地)填充表格后的高度,然后根据高度比较,将较大的高度赋予较小的表格。另请记住,结果必须转换为数字以进行比较,当最终找到并应用更大的值时,将“px”添加到该值。

这是一个代码片段...

document.getElementById("tbl1h").innerHTML = "tbl1 height: " + document.getElementById("tbl1").offsetHeight;
document.getElementById("tbl2h").innerHTML = "tbl2 height: " + document.getElementById("tbl2").offsetHeight;

if (Number(document.getElementById("tbl1").offsetHeight) >= Number(document.getElementById("tbl2").offsetHeight)) {
    document.getElementById("tbl2").style.height = Number(document.getElementById("tbl1").offsetHeight)+"px";
} else {
    document.getElementById("tbl1").style.height = Number(document.getElementById("tbl2").offsetHeight)+"px";
}
document.getElementById("res").innerHTML = " After change:: tbl1 height: " + document.getElementById("tbl1").offsetHeight + "  tbl2 height: " + document.getElementById("tbl2").offsetHeight;
table,th,td {
  border: 1px solid black;
  text-align: center;
  align: center;
}
th {
  text-decoration: underline;
}
#tbl1 {
  width: 30%;
  box-sizing: border-box;
  float: left;
  background: yellow;
}
#tbl2 {
  width: 70%;
  box-sizing: border-box;
  float: left;
  background: green;
}
<table id="tbl1" class="tbl">
    <tr>
        <th>blah</th>
        <th>77666</th>
    </tr>
    <tr>
        <td>asasaas</td>
        <td>grfrrrgrrt</td>
    </tr>
    <tr>
        <td>asasaas</td>
        <td>grfrrrgrrt</td>
    </tr>
    <tr>
        <td>asasaas</td>
        <td>grfrrrgrrt</td>
    </tr>
    <tr>
        <td>asasaas</td>
        <td>grfrrrgrrt</td>
    </tr>
    <tr>
        <td>asasaas</td>
        <td>grfrrrgrrt</td>
    </tr>
</table>
<table id="tbl2" class="tbl">
    <tr>
        <th>wooohooooo</th>
        <th>ahaaa</th>
        <th>rtrt</th>
        <th>aas</th>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
    <tr>
        <td>nnnsnnsnsnn</td>
        <td>aasqs</td>
        <td>ndcd</td>
        <td>776676676</td>
    </tr>
</table>
Before change:::
<div id="tbl1h"></div>
<div id="tbl2h"></div>
<div id="res"></div>

希望这就是您要找的。祝你好运

更新::这里还有一个 fiddle 链接http://jsfiddle.net/fe2crmsx/

关于css - 使两个动态填充的表具有相同的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26933948/

相关文章:

javascript - 单击 div 内的缩略图时打开全尺寸图像

css - 为什么 CSS 没有让元素保持宽度 :height ratio 的能力

css - 仅使用 CSS 创建形状

jQuery 菜单悬停

javascript - 在 flex 容器内时图像的高度会增加

mysql - 使用特定过滤器从 MySQL 数据库填充 DropDownList

asp.net - VB.Net 中的可选参数

json - 循环 JSON 数组对象的内容

vb.net - SQLiteDataReader 从下一条记录中获取一个字段?

vb.net - 使用 VB.Net 读取和写入 xml 文件