我正在创建动态控件,如文本框、Page_Init
. 创建控件后,我将数据绑定到控件。当页面回发发生时,我必须重新创建控件并重新绑定数据。
有什么方法可以缓存动态创建的控件并将最新数据更新到该控件。例如,我创建文本框然后将值设置为“abc”,当有回发时,我不想再次重新创建文本框,或者只想从缓存中获取控制权并想更新最新值说“xyz”到那个文本框。
基本上是第一次创建控件,缓存控件并将最新数据绑定到回发控件。
谢谢 Yogesh
我正在创建动态控件,如文本框、Page_Init
. 创建控件后,我将数据绑定到控件。当页面回发发生时,我必须重新创建控件并重新绑定数据。
有什么方法可以缓存动态创建的控件并将最新数据更新到该控件。例如,我创建文本框然后将值设置为“abc”,当有回发时,我不想再次重新创建文本框,或者只想从缓存中获取控制权并想更新最新值说“xyz”到那个文本框。
基本上是第一次创建控件,缓存控件并将最新数据绑定到回发控件。
谢谢 Yogesh
在您的 init 方法中添加以下代码
if(!IsPostBack)
{
//Put your control initzilation here and it will not be triggered on a PostBack
}
您将需要其他逻辑来更改需要更改的控件的 txt 值。
在方法中创建控件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
}
没有每次你必须创建它
我不知道,但我认为这是微软的错误或其他东西,但你必须每次都创建它
一些开发人员建议您必须在 page_Preinit 中创建它,但您不会获得任何静态表格或面板控件,那么您在哪里添加控件?