2012-01-27 15 views
0

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

キー/値のペアは、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); 

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

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

私は、それぞれのリフレッシュが実際にデータベースから発生しているので、不必要にリフレッシュしたくないので、その動的コンテンツが消去されたときに選択することをお勧めします。

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

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

しかし何それは今んが、ページが最初にロードが、しかし、すぐにいくつかのポストバックイベントは、(例えばボタンをクリックするユーザーなど)が発生すると、動的なコンテンツが消去され、動的コンテンツを生成するが、作成されていません。

基本的に私が望むのは、上記のように、どのポストバックイベントでも抹消されない動的コンテンツを作成できる方法を発見することです。どのポストバックイベントで発生するのではなく、いつリフレッシュするのかを制御できるようにしたい。これは可能ですか?

感謝

+0

ViewStateにそのデータテーブルを置くために多くの方法 1.試みがありますポストバックでnullを確認してください。 2.フォームに隠しフィールドを入れて確認してください。 if(!IsPostBack && hiddenfield1.value)あなたを助けるかもしれない – Madhu

答えて

0

私の代わりをPage_LoadのPage_Initに動的なコードを置くことはポストバック時に拭いされてからコンテンツを防止することを発見しました

関連する問題