Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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
C# 在回发时从数据库重置动态创建的用户控件的Dropbox项_C#_Asp.net_Postback_Dropbox_Dynamic Usercontrols - Fatal编程技术网

C# 在回发时从数据库重置动态创建的用户控件的Dropbox项

C# 在回发时从数据库重置动态创建的用户控件的Dropbox项,c#,asp.net,postback,dropbox,dynamic-usercontrols,C#,Asp.net,Postback,Dropbox,Dynamic Usercontrols,首先,我成功地创建了一个web应用程序,在该应用程序中,动态创建的用户控件将被重新创建,并在回发时使用正确的信息重新填充。我不确定我的问题是什么,但我希望你能根据我的情况帮我解决: 在我的页面上,我在aspx页面的硬编码文本框中输入要创建的控件数量,然后单击OK按钮。然后,在后台使用c动态创建指定数量的用户控件 到目前为止,所需数量的动态控件位于页面上的表中。 接下来 我在每个动态用户控件上有1个文本框和4个下拉框。当我在文本框字段中键入公司名称,然后按enter键或单击文本更改事件时,它会自动

首先,我成功地创建了一个web应用程序,在该应用程序中,动态创建的用户控件将被重新创建,并在回发时使用正确的信息重新填充。我不确定我的问题是什么,但我希望你能根据我的情况帮我解决:

在我的页面上,我在aspx页面的硬编码文本框中输入要创建的控件数量,然后单击OK按钮。然后,在后台使用c动态创建指定数量的用户控件

到目前为止,所需数量的动态控件位于页面上的表中。 接下来

我在每个动态用户控件上有1个文本框和4个下拉框。当我在文本框字段中键入公司名称,然后按enter键或单击文本更改事件时,它会自动回发,文本框将保留我键入的公司名称

基于此字符串,从数据库填充Dropbox。现在,当我从Dropbox中选择所需的项目并单击位于动态控件外部的save按钮时,它会在页面上插入数据库,但结果是,在这次回发时,Dropbox中的索引已经重置,并且插入了错误的值

下面的图片首先展示了它应该是怎样的,然后是怎样的

基本上,公司名称保留在动态控件的文本框中,但我从下拉框中选择的信息将重置为第一个索引


没有代码很难判断发生了什么,但这是一个常见的错误:


如果在页面加载事件中填充/创建dropdownlist控件并发回,则代码将填充/重新创建控件。这就是为什么你必须使用If!在页面加载事件中返回IsPostBack。否则,每次您回发时,它都会执行该代码,并且实际上只想在事件处理程序中为该按钮执行该代码。

如果要动态创建控件,请确保在Page_Init事件中执行该操作。必须在每次回发时重新创建动态控件。如果是回发,它们的状态将在页面初始化后恢复,因此如果要覆盖它们,请确保仅在页面加载中设置它们的值。

我真的不知道问题出在哪里,所以我认为从我的aspx.cs和我的ascx页面发布我的所有代码是不现实的:P你的意思是我应该把它放在ascx页面的Page\u Load事件中还是放在aspx.cs页面的Page\u Load中?因为在我的aspx.cs页面上我有这个,但是在ascx页面上页面加载事件是空的…我认为只有aspx.cs的页面加载事件和aspx.cs中按钮的事件处理程序可以;