0

我正在创建动态控件,如文本框、Page_Init. 创建控件后,我将数据绑定到控件。当页面回发发生时,我必须重新创建控件并重新绑定数据。

有什么方法可以缓存动态创建的控件并将最新数据更新到该控件。例如,我创建文本框然后将值设置为“abc”,当有回发时,我不想再次重新创建文本框,或者只想从缓存中获取控制权并想更新最新值说“xyz”到那个文本框。

基本上是第一次创建控件,缓存控件并将最新数据绑定到回发控件。

谢谢 Yogesh

4

3 回答 3

0

在您的 init 方法中添加以下代码

if(!IsPostBack)
{
    //Put your control initzilation here and it will not be triggered on a PostBack
}

您将需要其他逻辑来更改需要更改的控件的 txt 值。

于 2012-12-20T08:38:26.637 回答
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
}
于 2012-12-20T08:44:39.000 回答
-1

没有每次你必须创建它

我不知道,但我认为这是微软的错误或其他东西,但你必须每次都创建它

一些开发人员建议您必须在 page_Preinit 中创建它,但您不会获得任何静态表格或面板控件,那么您在哪里添加控件?

于 2013-03-04T13:42:11.733 回答