我在<table
控件中有一个标准的HTML ASP:Panel
。
在这个HTML表格中是<TR
行
在这个TR行里面是severale表。
<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语句不能对类型的变量进行操作 &#39; System.Web.UI.HtmlControls.HtmlTableRow&#39;因为 &#39; System.Web.UI.HtmlControls.HtmlTableRow&#39;不包含公众 &#39; GetEnumerator&#39;
的定义
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#代码的想法背后赞赏。
谢谢
[UPDATE] 我通过将上述表格中的一个硬编码到代码中来设法绕过它...
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
行中的每个表重复此代码。
但它现在会做。
答案 0 :(得分:1)
尝试内部html概念。
实施例: 迭代特定的html元素,在你的情况下说“table row”,在你的控制器上写下面的代码:
trRiskMgt.InnerHtml = Server.HtmlEncode("your data");// elementId.InnerHtml
如果您尚未指定任何数据,则在这种情况下将显示单行。 随着数据的增加,它将迭代该行。
您可以进一步谷歌HtmlEncode或Decode以便更好地理解。