我正在Page_Init
创建动态控件,如文本框,下拉列表。创建控件后,我将数据绑定到控件。当页面回发发生时,我必须重新创建控件并重新绑定数据。
有什么方法可以缓存动态创建的控件,只是将最新的数据更新到该控件。对于例如我创建文本框然后将值设置为“abc”,当有回发时,我不想再次重新创建文本框,或者只是想从缓存中获取控件并想要更新最新值,将“xyz”更新为文本框。
首次基本创建控件,缓存控件并绑定最新数据以控制回发。
由于 Yogesh
答案 0 :(得分:0)
在init方法中添加以下代码
if(!IsPostBack)
{
//Put your control initzilation here and it will not be triggered on a PostBack
}
您需要有其他逻辑方法来改变需要更改的控件的txt值。
答案 1 :(得分:0)
在Page_OnInit
方法中创建控件应该注意保留其数据的控件。
如果您也在代码中设置数据,请确保将它们封装在
中if (!Page.IsPostBack)
{
//set data here
}
这确保了只有第一次设置数据,而不是每次都覆盖。
修改强>
作为一个更完整的例子:
protected void Page_OnInit(object sender, EventArgs e)
{
TextBox txt = new TextBox();
//create more controls
if (!Page.IsPostBack)
{
txt.Text = "initial value";
}
Page.Controls.Add(txt);
//add other controls
}
答案 2 :(得分:-1)
没有EveryTime你必须创建它
我不知道,但我认为这是微软或其他的错误,但你必须每次都创建它
一些开发人员建议您必须在page_Preinit中创建它,但是您不会获得任何静态表或面板控件,那么您在哪里添加控件?