动态加载的控件丢失值(ASP.NET)
关于asp.net应用程序中动态加载的控件,我遇到了一个奇怪的问题 因此,有一个控件,用户必须在其中选择一些项目和/或进行一些文本输入(文本框)。控件依赖于单个下拉列表元素 所以用户A在这个下拉列表“controlselector”->中选择一个特定的值,将加载许多控件中的一个。之后,用户单击save,然后将其保存到数据库中 问题是,并非所有项目都保存到数据库中 我在每次页面加载时创建并重新创建控件,我已在“controlselector”上重新打开autopost,但控件是在页面加载事件时加载的。尝试保存时,元素为空,但不是每个项目:( 似乎有时页面会记住值,有时却不会记住所有内容 谢谢 [编辑] 我看到的问题是,有2次动态填充动作。 1.)确定哪个控件,然后加载自定义控件 2.)用参数填充自定义控件如果不想重新创建这些控件,则需要检查“IsPostBack”。。。它扼杀了你的价值观 试着把代码改成这样动态加载的控件丢失值(ASP.NET),asp.net,.net-3.5,controls,Asp.net,.net 3.5,Controls,关于asp.net应用程序中动态加载的控件,我遇到了一个奇怪的问题 因此,有一个控件,用户必须在其中选择一些项目和/或进行一些文本输入(文本框)。控件依赖于单个下拉列表元素 所以用户A在这个下拉列表“controlselector”->中选择一个特定的值,将加载许多控件中的一个。之后,用户单击save,然后将其保存到数据库中 问题是,并非所有项目都保存到数据库中 我在每次页面加载时创建并重新创建控件,我已在“controlselector”上重新打开autopost,但控件是在页面加载事件时加载
Page_Load()
{
if(IsPostBack == false){
PlaceHolder.Clear();
//with Createpath the path to the control is created and loaded
PlaceHolder.Controls.Add(LoadControl(CreatePath(Selector.SelectedValue)));
//some methods are started to fill some lists in the control
((MyCustomControl)PlaceHolder.Controls[0]).FillElements(someParameter);
}
}
如果您不想重新创建这些控件,则需要检查“IsPostBack”。。。它扼杀了你的价值观
试着把代码改成这样
Page_Load()
{
if(IsPostBack == false){
PlaceHolder.Clear();
//with Createpath the path to the control is created and loaded
PlaceHolder.Controls.Add(LoadControl(CreatePath(Selector.SelectedValue)));
//some methods are started to fill some lists in the control
((MyCustomControl)PlaceHolder.Controls[0]).FillElements(someParameter);
}
}
页面加载在生命周期中太晚,无法创建动态控件,因为状态在加载事件之前恢复到控件。这意味着您需要更早地创建控件,否则ASP.Net在恢复状态时将看不到它。尝试在Init事件中创建它们。或者,最好尝试以下选项之一:
- 创建一个自定义控件类型,根据需要进行自我调整,并在页面上具有该控件的常规实例
- 将所有控件放置在页面上,但仅将所关心的控件设置为true
- 创建一个自定义控件类型,根据需要进行自我调整,并在页面上具有该控件的常规实例
- 将所有控件放置在页面上,但仅将所关心的控件设置为true
- 谢谢你的帮助,但问题出在完全不同的地方
动态加载到下拉列表中的项目(也动态加载)有一些“\n”特殊字符,但不是每个项目
这就是为什么不是每件东西都丢了,只是少了几件
我不知道我是否应该/可以将此标记为答案,因为问题在另一个地方谢谢你的帮助,但问题在完全不同的地方 动态加载到下拉列表中的项目(也动态加载)有一些“\n”特殊字符,但不是每个项目 这就是为什么不是每件东西都丢了,只是少了几件
我不知道我是否应该/可以将此标记为答案,因为问题在另一个地方您是否在UserControl中的所有控件上都启用了viewstate?是否在页面的其余部分以及整个UserControl本身上启用了ViewState?是的,我在UserControl上启用了ViewState…是否在UserControl中的所有控件上都启用了ViewState?是否在页面的其余部分和UserControl本身整体上启用了ViewState?是的,我在UserControl上启用了ViewState…当我将创建移动到page_init或oninit事件时,我的dropdownlist(决定需要加载哪个自定义控件)似乎还没有任何值。。所以控件正在加载我也尝试了你的第二个选择,将控件放在页面上,并将它们设置为可见或不可见。。。但问题仍然存在。。我认为这是因为控件需要一些参数来填充它们的dropdownlists((MyCustomControl)PlaceHolder.controls[0])。FillElements(someParameter);当我将创建移动到page_init或oninit事件时,我的dropdownlist(决定需要加载哪个自定义控件)似乎还没有任何值。。所以控件正在加载我也尝试了你的第二个选择,将控件放在页面上,并将它们设置为可见或不可见。。。但问题仍然存在。。我认为这是因为控件需要一些参数来填充它们的dropdownlists((MyCustomControl)PlaceHolder.controls[0])。FillElements(someParameter);