0

我有一个我正在以编程方式创建的表,然后在 CreateChildControls() 方法中向其中添加一些行和数据。它有 2 列,其中包含下拉列表控件。现在在客户端基于下拉列表中的选择,我正在添加更多通过复制最后一行的内容来创建行。有一个保存按钮,单击该按钮会调用 Web 部件的以下覆盖函数以取回表对象。问题是我在客户端添加的行不是已检索..仅检索最初在服务器端创建的行。有人可以告诉我我在这里做错了什么。

所以这样做 Table tab = FindControl("Main1") as Table; tab.rows 只给出最初在服务器上生成的 3 个,不包括在客户端创建的 2 个新的

Public Override Control FindControl(string id)

{

return base.FindControl(id);

}
4

2 回答 2

1

客户端添加的任何行都不会传递到服务器——这就是该技术的工作方式。更好的方法是让保存按钮生成 PostBack 并在服务器上添加新行。

如果绝对必须在客户端添加新行,那么您将需要编写一个 ajax 调用以在将新行添加到客户端后将它们添加到视图状态服务器端 - 当 PostBack 应该完美时,这似乎是很多工作足够的。

于 2013-04-11T14:05:01.367 回答
0

我相信服务器端添加的控件存储在 ViewState 中,客户端 DOM 更改不会影响它。在您的表格和下拉列表周围添加 UpdatePanel,并在服务器端添加行,这对您来说可能是最简单的,也是最好的用户体验。

于 2013-04-11T14:06:30.860 回答