如何遍历单个HTML行中的每个HTML表

时间:2015-10-13 04:12:28

标签: c# asp.net html-table

我在<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行中的每个表重复此代码。

但它现在会做。

1 个答案:

答案 0 :(得分:1)

尝试内部html概念。

实施例: 迭代特定的html元素,在你的情况下说“table row”,在你的控制器上写下面的代码:

trRiskMgt.InnerHtml = Server.HtmlEncode("your data");// elementId.InnerHtml

如果您尚未指定任何数据,则在这种情况下将显示单行。 随着数据的增加,它将迭代该行。

您可以进一步谷歌HtmlEncode或Decode以便更好地理解。