Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 回发动态表的最佳方法_Asp.net_Webforms_Postback - Fatal编程技术网

Asp.net 回发动态表的最佳方法

Asp.net 回发动态表的最佳方法,asp.net,webforms,postback,Asp.net,Webforms,Postback,我有一个服务器端的表控件。因为我不知道它之前会有多少行和列,所以我在pagesForm\u Loadevent handler中构建了这个表的内容 这很有效。但我用文本框填充同一个表,如果单击提交按钮,我需要能够读取这些文本框 目前,表内容似乎在回发时被清除 在表中动态创建文本框,然后在回发页面时读取这些文本框的值的最佳方法是什么?如果要在回发时保留这些值,则需要在page_Init事件中重新创建表控件层次结构。这通常意味着您需要将表控件重新绑定到来自数据库的数据结构 一旦控件层次结构就位,AS

我有一个服务器端的表控件。因为我不知道它之前会有多少行和列,所以我在pages
Form\u Load
event handler中构建了这个表的内容

这很有效。但我用文本框填充同一个表,如果单击提交按钮,我需要能够读取这些文本框

目前,表内容似乎在回发时被清除


在表中动态创建文本框,然后在回发页面时读取这些文本框的值的最佳方法是什么?

如果要在回发时保留这些值,则需要在
page_Init
事件中重新创建表控件层次结构。这通常意味着您需要将表控件重新绑定到来自数据库的数据结构

一旦控件层次结构就位,ASP.NET将从
ViewState
加载任何数据。此数据实际上可以是以前从服务器在文本框上设置的数据。此步骤将确保这些值保留在控件上

在下一步中,ASP.NET将处理POST数据,这里基本上将使用客户端(浏览器)的输入更新表文本框。从ViewState设置的任何值(很可能)都将被覆盖

所有这些都发生在
页面加载之前
,因此在此阶段,您应该能够访问客户端文本框值


请查看,尤其是图像。

如果要在回发时保留值,则需要在
页面_Init
事件中重新创建表控件层次结构。这通常意味着您需要将表控件重新绑定到来自数据库的数据结构

一旦控件层次结构就位,ASP.NET将从
ViewState
加载任何数据。此数据实际上可以是以前从服务器在文本框上设置的数据。此步骤将确保这些值保留在控件上

在下一步中,ASP.NET将处理POST数据,这里基本上将使用客户端(浏览器)的输入更新表文本框。从ViewState设置的任何值(很可能)都将被覆盖

所有这些都发生在
页面加载之前
,因此在此阶段,您应该能够访问客户端文本框值



查看,尤其是图像。

您必须最迟使用相同ID在
页面加载中重新创建回发时动态创建的所有控件。是否有理由不使用web数据绑定控件,如
GridView
(呈现为表格)或
中继器
?但是如果我重新创建表格,文本框是否会重置并丢失编辑的值?我喜欢中继器控制,但这似乎会造成同样的问题。我仍然需要能够读取编辑过的值。不,如果您分配相同的ID,并且在页面生命周期中不太晚重新创建控件,则值将从
ViewState
加载,并且事件将成功触发。@TimSchmelter:哦,您把我弄丢了。如果它在ViewState中,为什么我需要重新创建所有动态创建的控件?无论如何,创建表内容的代码设置文本框值。因此,如果我在回发时这样做,这些值将不代表用户键入的内容。你知道有什么链接可以解释你的建议吗?看看msdn,例如,根据页面的生命周期:,这也是值得一读的:(也是关于
ViewState
)的第一个链接。你必须在
page\u Load
中重新创建回发时所有动态创建的控件,并且最晚使用相同的ID。是否有理由不使用web数据绑定控件,如
GridView
(呈现为表格)或
中继器
?但是如果我重新创建表格,文本框是否会重置并丢失编辑的值?我喜欢中继器控制,但这似乎会造成同样的问题。我仍然需要能够读取编辑过的值。不,如果您分配相同的ID,并且在页面生命周期中不太晚重新创建控件,则值将从
ViewState
加载,并且事件将成功触发。@TimSchmelter:哦,您把我弄丢了。如果它在ViewState中,为什么我需要重新创建所有动态创建的控件?无论如何,创建表内容的代码设置文本框值。因此,如果我在回发时这样做,这些值将不代表用户键入的内容。你知道有什么链接可以解释你的建议吗?看看msdn,例如,根据页面的生命周期:,这也是值得一读的:(也是关于
ViewState
)的第一个链接。我没有将我的表直接连接到数据库。但是你是说我可以填充表格,包括设置这些文本框的值,ASP.NET会用回发的数据覆盖这些值吗?我正在测试。抱歉,我对页面生命周期非常熟悉。看不出这是如何回答我想弄明白的。这里的关键应该是在Page_Init重建控件层次结构。那么ASP.NET应该足够聪明,可以将Request.Form对象中的值映射到原始ASP表。至少我希望如此:)仍在测试中。事实上,即使我在
Page\u Load
中构造控件,它似乎也像我理解的那样。此外,它位于ASCX控件中,其外观受属性影响。因此,在设置这些属性之前,我无法构造控件。您是说,在页面加载中,浏览器中的值在重建表后立即可用?那会有点奇怪。关于您的ASCX:您是否也使用LoadControl动态加载它?在这种情况下,ASCX的加载也应该在Page_Init事件中完成。我是说我可以在
Page_Load
中填充表格,然后我可以读取