以编程方式获取表控件

时间:2013-04-11 13:51:37

标签: asp.net

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

这样做Table tab = FindControl(“Main1”)如表; tab.rows只提供最初在服务器上生成的3个,并且不包括创建客户端的2个新

Public Override Control FindControl(string id)

{

return base.FindControl(id);

}

2 个答案:

答案 0 :(得分:1)

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

如果必须在客户端添加新行,那么你需要编写一个ajax调用,在添加客户端后将新行添加到viewstate服务器端 - 看起来像PostBack时的很多工作应该是完全足够的。

答案 1 :(得分:0)

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