【发布时间】:2013-07-01 13:47:33
【问题描述】:
我有一个带有 HTML 表格的 Web 应用程序,其中到处都包含输入框。我希望能够从 C# 方面向这些表中添加行。为此,我使用了一个调用此方法的 asp 按钮:
private void AddRow()
{
HtmlTableRow tRow = new HtmlTableRow();
HtmlTableCell cell = new HtmlTableCell();
HtmlTableCell cell2 = new HtmlTableCell();
HtmlTableCell cell3 = new HtmlTableCell();
HtmlTableCell cell4 = new HtmlTableCell();
cell.InnerHtml = "<input type=\"text\" size=\"29\">";
tRow.Cells.Add(cell);
cell2.InnerHtml = "<input type=\"text\" size=\"9\" class=\"units commas\" />";
cell2.Attributes.Add("class", "leftBorder textCenter");
tRow.Cells.Add(cell2);
cell3.InnerHtml = "<input type=\"text\" size=\"8\" class=\"value commas\" />";
cell3.Attributes.Add("class", "leftBorder textCenter");
tRow.Cells.Add(cell3);
cell4.InnerHtml = "<input type=\"text\" size=\"11\" readonly=\"readonly\" tabindex=\"-1\" class=\"totalA1 autoTotal\" /> ";
cell4.Attributes.Add("class", "leftBorder rightBorder textRight");
tRow.Cells.Add(cell4);
someTable.Rows.Add(tRow);
}
这很好用……正好是一排。我可以单击按钮,它会添加一行。如果我再次单击它,它不会做任何事情。更具体地说,我怀疑它正在删除当前添加的行,将文档恢复到“默认”状态,然后添加一行(实际上什么都不做)。
假设我是对的,我需要能够以某种方式将一行附加到另一个动态创建的行,而不是仅仅替换它。如果我错了,我只需要一种能够在按下按钮时不断添加行的方法。
我该怎么做呢?
编辑:我应该指定,所有这些都可以在一个循环中一次完成。为了测试,我希望让它在按下按钮时工作,但它都可以整齐地塞进某种循环中。我已经(一些)成功地将它放在了一个中。
【问题讨论】:
-
这是因为表在回发时被重置。
-
@Darren 说的是正确的。按钮回发正在将表重置回其原始状态。您可以尝试仅将按钮包装在
UpdatePanel中,这将仅发回按钮而不是整个页面。 -
@Darren 我也很怀疑。有没有办法解决这个问题?
-
如果您对 page_load 中的表格进行任何操作,请将其包装在
if(!IsPostBack){} -
你的做法行不通。如果我们知道您想要达到的目标,我们可以向您推荐一种替代方法。
标签: c# asp.net html-table