0

でテキストボックス、ドロップダウンなどの動的コントロールを作成していPage_Initます。コントロールを作成した後、データをコントロールにバインドしています。ページのポストバックが発生すると、コントロールを再作成してデータを再バインドする必要があります。

動的に作成されたコントロールをキャッシュし、最新のデータをそのコントロールに更新する方法はありますか? たとえば、テキストボックスを作成してから値を「abc」に設定します。ポストバックがある場合、テキストボックスを再度作成したくないか、キャッシュからコントロールを取得して最新の値を「xyz」と更新したいだけですそのテキストボックスに。

基本的に、最初にコントロールを作成し、コントロールをキャッシュして、ポストバック時に最新のデータをコントロールにバインドします。

ありがとうヨゲシュ

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 に答える