【发布时间】:2023-03-24 15:46:01
【问题描述】:
我在 ASP:Panel 控件中有一个标准的 HTML <table。
在这个 HTML 表里面是一个 <TR 行
在这个 TR 行里面是几个表。
<asp:panel ID="PanelPreStart" runat="server" Visible="false" Enabled="false" Width="500px" >
<table runat="server" id="tblPreStart">
...
...
<tr id="trRiskMgt" runat="server" visible="false">
<td colspan="2">
<strong><big>** RISK MANAGEMENT **</big></strong>
<br /><br />
<table id="tblHOC_MON" runat="server" visible="false">
..
..
</table>
<br />
<table id="tblRMP_TUE" runat="server" visible="false" style="width: 100%; height: 114px; color: black; background-color: white;">
<tr>
...
... etc
如何遍历trRiskMgt 行以获取所有表(tblHOC_MON 等)?
我已经尝试过了,但它不起作用。我收到此错误:
CS1579:foreach 语句不能对类型变量进行操作 'System.Web.UI.HtmlControls.HtmlTableRow' 因为 'System.Web.UI.HtmlControls.HtmlTableRow' 不包含公共 'GetEnumerator' 的定义
foreach (HtmlTableRow trow in trRiskMgt)
{
foreach (HtmlTable tbl in trow.Cells)
{
foreach (HtmlTableRow row in tbl.Controls)
{
foreach (HtmlTableCell cell in row.Cells)
{
foreach (Control ctrl in cell.Controls)
{
//CONTROL IS TEXBOXT: DISABLE CONTROL (NOT HIDE!)
if (ctrl is TextBox)
{
TextBox txt = (TextBox)ctrl;
txt.Enabled = wsDisable;
}
}
}
}
}
}
对 JavaScript 和 C# 代码背后的想法表示赞赏。
谢谢
[更新] 我设法通过将上述表格之一硬编码到代码中来解决它......
foreach (HtmlTableRow row in tblHOC_MON.Rows)
{
foreach (HtmlTableCell cell in row.Cells)
{
foreach (Control ctrl in cell.Controls)
{
//CONTROL IS TEXBOXT: EXTRACT VALUES//
if (ctrl is TextBox)
{
TextBox txt = (TextBox)ctrl;
txt.Enabled = false;
}
}
}
}
这显然不理想,因为我需要为TR 行中的每个表重复此代码多次。
但现在可以了。
【问题讨论】:
-
为此,您必须在尝试从 C# 访问的所有标签上指定
runat="server"。 -
仔细观察。他们已经有了。
-
不,你看得更仔细!
<td colspan="2">看到了吗? -
另外,当你说“但它不起作用”时 - 更具体。
-
但是 TR 和 TABLE 标签确实有。您是说行内的所有内容都必须有服务器引用吗?
标签: c# asp.net html-table