C# 使用C遍历html表中的行#
我在aspx页面(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
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){}