提问人:altaaf.hussein 提问时间:8/9/2023 更新时间:8/10/2023 访问量:61
html 表中的 div 在代码隐藏中更改可见性时不显示
Div inside a html table not showing when visibility is changed in code behind
问:
我希望有人能帮助我。我正在尝试做一些听起来很简单的事情,我相信我过去也这样做过,但我正在努力让它发挥作用。任何帮助将不胜感激。
我有一个带有行 (tr) 的 html 表作为 runat 服务器,所以我可以决定是否显示它们,但这完全取决于给定行的单元格中是否有任何内容要显示。例如,如果第一行在两个单元格 (td) 中的任何一个单元格中都没有任何数据,则没有理由显示第 1 行,以此类推。这一切都在 ASP.NET
最初我尝试了以下方法
<table>
<tr id="row1" runat="server" visible="false">
<td id="col1Row1" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</td>
<td id="col2Row1" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</td>
</tr>
<tr id="row2" runat="server" visible="false">
<td id="col1Row2" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</td>
<td id="col2Row2" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</td>
</tr>
</table>
现在,在使用 VB.NET 的代码中,我有例程来显示来自数据库的数据,并且根据数据将决定是否在 td 中显示任何内容。因此,让我们以以下代码为例,我有一个可见的 td,另一个不可见。
col1Row1.Visible = False
col2Row1.Visible = True
row1.visible = (col1Row1.Visible OR col2Row1.Visible)
这表明行的可见性取决于其单元格是否可见(而单元格又取决于数据)。这似乎不起作用,所以我想,因为这是一张表,也许它不允许我更改 .可见属性,所以我将代码更改为如下所示
<table>
<tr id="row1" runat="server" visible="false">
<td id="col1Row1">
<div id="Col1Data1" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</div>
</td>
<td id="col2Row1">
<div id="Col2Data1" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</div>
</td>
</tr>
<tr id="row2" runat="server" visible="false">
<td id="col1Row2">
<div id="Col1Data2" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</div>
</td>
<td id="col2Row2">
<div id="Col2Data2" runat="server" visible="false">
* SOME STUFF HERE EG CONTROLS, DATA ETC
</div>
</td>
</tr>
</table>
如您所见,我更改了 html/asp.net 以包含一个除法,而不是使 then 可见/不可见。我 VB.net 背后的代码如下所示
Col1Data1.Visible = False
Col2Data1.Visible = True
row1.visible = (Col1Data1.Visible OR Col2Data1.Visible)
因此,从这里开始,我们将根据数据设置 div 的可见性,例如,我快速设置了它们(显然我选择显示一个而不是不显示一个,但它可以是任意数量的排列)。但是,这仍然不起作用,调试似乎表明 division in 没有改变其可见性状态。
Col1Data1.Visible = False
Col2Data1.Visible = True
我知道分区的可见性可以像这样更改,因为我在我正在处理的同一个屏幕中都这样做了,但是当它在表格内时,这似乎不起作用。任何人都知道我做错了什么以及如何让它发挥作用。请记住,这是我正在做的事情的一种非常简单的代码形式,因为我最终将 div 对象传递到不同的地方,因为它从不同的地方获取数据,这决定了它的可见性,但是在我的调查过程中,我可以看到这不会改变它,无论何时在表中。
感谢您的帮助
答:
您可以使用 javascript 更改行的可见性。
<script>
var dataCol= document.getElementById('Col1Data1');
if(dataCol)){
dataCol.show();
}
</script>
评论
你所拥有的工作,只是你必须打开一整行,然后才能对列进行任何更改。
因此,此标记:
<table >
<tr id="row1" runat="server" visible="false">
<td id="col1Row1" runat="server" visible="false">
my col1 row 1
</td>
<td id="col2Row1" runat="server" visible="false">
my col2 row 1
</td>
</tr>
<tr id="row2" runat="server" visible="false">
<td id="col1Row2" runat="server" visible="false">
my col1 row 2
</td>
<td id="col2Row2" runat="server" visible="false">
my col2 row 2
</td>
</tr>
</table>
<br />
<asp:Button ID="Button1" runat="server" Text="test"
OnClick="Button1_Click"
/>
对于按钮,然后是这个:
Protected Sub Button1_Click(sender As Object, e As EventArgs)
row1.Visible = True ' must turn on row, to show colums
col1Row1.Visible = True
End Sub
结果是这样的:
因此,如果隐藏整行,那么尝试显示/隐藏列当然是行不通的。
评论
原因是在设置 row1.visible 时,列可见性仍未正确设置。尝试这样的事情:
DIM col1Row1_visibilty AS BOOLEAN = FALSE
DIM col2Row1_visibilty AS BOOLEAN = FALSE
IF (True Condition for col1Row1) THEN
col1Row1_visibilty = TRUE
END IF
IF (True Condition for col2Row1) THEN
col2Row1_visibilty = TRUE
END IF
col1Row1.Visible = col1Row1_visibilty
col2Row1.Visible = col2Row1_visibilty
row1.Visible = (col1Row1_visibilty Or col2Row1_visibilty)
或者这个:
IF (True Condition for col1Row1) THEN
col1Row1.Visible = True
row1.Visible = True
END IF
IF (True Condition for col2Row1) THEN
col2Row1.Visible = True
row1.Visible = True
END IF
评论