在Asp.net C#中创建动态控件,并缓存控件并绑定数据

时间:2012-12-20 08:34:16

标签: c# asp.net caching dynamic-controls

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

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

首次基本创建控件,缓存控件并绑定最新数据以控制回发。

由于 Yogesh

3 个答案:

答案 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中创建它,但是您不会获得任何静态表或面板控件,那么您在哪里添加控件?