C# 使用C遍历html表中的行#

C# 使用C遍历html表中的行#,c#,html,asp.net,html-table,C#,Html,Asp.net,Html Table,我在aspx页面(C#)中有一个html表,其中有如下列 1.CheckBox 2.Text 3.Text 4.TextBox 我希望一次遍历一行表,并根据复选框是否选中来处理(基于column2运行存储过程)。我如何才能做到这一点?假设您使用的是表服务器控件,那么它只是: foreach (TableRow row in table.Rows) { var checkBox = (CheckBox)row.Cells[0].Controls[0]; //Ass

我在aspx页面(C#)中有一个html表,其中有如下列

 1.CheckBox  2.Text  3.Text  4.TextBox

我希望一次遍历一行表,并根据复选框是否选中来处理(基于column2运行存储过程)。我如何才能做到这一点?

假设您使用的是表服务器控件,那么它只是:

foreach (TableRow row in table.Rows)
    {
        var checkBox = (CheckBox)row.Cells[0].Controls[0]; //Assuming the first control of the first cell is always a CheckBox.

        if (checkBox.Checked)
        {
            var col2 = (TextBox)row.Cells[1].Controls[0];

            /* Do Stuff With col2 */
        }
        else
        {
            /* Do Stuff */
        }
    }

如果只使用常规html表(带有runat=“server”)以及html表单控件,则只需将TableRow更改为HtmlTableRow,将CheckBox更改为HtmlInputCheckBox,将TextBox更改为HtmlInputText。所有这些控件都位于System.Web.UI.HtmlControls命名空间中。

假设您使用的是表服务器控件,那么它只是:

foreach (TableRow row in table.Rows)
    {
        var checkBox = (CheckBox)row.Cells[0].Controls[0]; //Assuming the first control of the first cell is always a CheckBox.

        if (checkBox.Checked)
        {
            var col2 = (TextBox)row.Cells[1].Controls[0];

            /* Do Stuff With col2 */
        }
        else
        {
            /* Do Stuff */
        }
    }

如果只使用常规html表(带有runat=“server”)以及html表单控件,则只需将TableRow更改为HtmlTableRow,将CheckBox更改为HtmlInputCheckBox,将TextBox更改为HtmlInputText。所有这些控件都位于System.Web.UI.HtmlControls命名空间中。

请查看HtmlTable类及其Rows属性


我相信这会在路上对你有所帮助

检查HtmlTable类及其Rows属性

我相信这会在路上对你有所帮助

如果在html中向表标记添加runat=“server”属性,则应该能够将表视为控件对象的集合,并且应该能够遍历

然而,这似乎是实现动态数据的最糟糕的方法。也许有了一些背景知识,我们可以帮助您找到更好的方法…

如果您在html中向表标记添加runat=“server”属性,您应该能够将表视为控件对象的集合,并且应该能够遍历


然而,这似乎是实现动态数据的最糟糕的方法。也许有了一些背景知识,我们可以帮助您找到一种更好的方法……

我手头已经有一些VB.NET代码可以做到这一点。只是稍微调整了一下。它可以很容易地移植到C#

这足够灵活,可以在任何内容(而不仅仅是表格)中找到复选框。然而,在您的特定场景中,您可能更喜欢使用Noblestrasher的答案


我的答案是一种递归方法,在树中爬行,找到每一个复选框。但是,如果您知道要查找复选框的列,并且知道复选框没有隐藏在其他容器中,那么Noblestrasher是一个简单、直接、更高效的算法。

我手头已经有一些VB.NET代码可以实现这一点。只是稍微调整了一下。它可以很容易地移植到C#

这足够灵活,可以在任何内容(而不仅仅是表格)中找到复选框。然而,在您的特定场景中,您可能更喜欢使用Noblestrasher的答案


我的答案是一种递归方法,在树中爬行,找到每一个复选框。但是,如果您知道要查找复选框的列,并且知道该复选框没有隐藏在其他容器中,那么NobleSrasher算法是一种简单、直接且更高效的算法。

您是否可以修改该算法以检查表的第一列中是否存在复选框?是的。var checkBox=行。单元格[0]。将[0]控制为复选框;然后在下一行:if(checkBox!=null&&checkBox.Checked){}您可以修改它以检查表的第一列中是否存在复选框吗?是。var checkBox=行。单元格[0]。将[0]控制为复选框;然后在下一行:if(checkBox!=null&&checkBox.Checked){}