0

C# ASP.NET フォームに問題があります。フォームの目的は、データベースからいくつかのキーと値のペアをロードして、ユーザーがそれらを表示、編集、または削除できるようにすることです。

Key/Value ペアは Page_Load イベントで動的に生成され、ページが最初に開いたときにすべてが正常に機能します。ここにいくつかのサンプルコードがあります(オリジナルからトリミングされています)

TableRow row = new TableRow();
TableCell cell = new TableCell();
cell.Text = keyName;
row.Cells.Add(cell);
cell = new TableCell();
cell.Text = keyValue;
row.Cells.Add(cell);
KeyValueTable.Rows.Add(row);

すべてのキーと値のペアをループするだけで、それぞれがテーブルに動的に追加されます。ページの読み込み時点では、すべてがスムーズに実行されており、すべてのキーと値のペアが期待どおりに表示されています。

runat="server" に設定されているため、ユーザーがボタンをクリックすると問題が発生し、ポスト バック イベントが生成されます。これが行うことは、上で生成された動的コンテンツをクリアしてから再作成することです (これは Page_Load イベントで作成されるため)。

各更新は実際にはデータベースから行われるため、不必要に更新したくないので、その動的コンテンツがいつクリアされるかを選択することをお勧めします。

私が試みたのは、ポストバックでない場合に動的コンテンツの生成を実行することです。いいえ:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        GenerateDynamicContent();
    }
}

ただし、ページが最初に読み込まれたときに動的コンテンツが生成されるようになりましたが、ポストバック イベント (ユーザーがボタンをクリックするなど) が発生するとすぐに、動的コンテンツは消去されますが、作成されません。

基本的に私が望んでいるのは、上記のように、ポストバック イベントで消去されない動的コンテンツを作成できる方法を発見することです。ポストバックイベントで発生するのではなく、いつ更新されるかを制御できるようにしたいと考えています。これは可能ですか?

どうもありがとう

4

1 に答える 1

0

動的コードを Page_Load ではなく Page_Init に配置すると、ポストバック中にコンテンツがワイプされるのを防ぐことがわかりました

于 2012-01-30T03:06:17.487 に答える