イベントを発生させる動的コントロールを含む動的テーブルを作成するページがあります。それは機能しますが、テーブルの変更を出力するために、いくつかのイベントで(page_loadの後)そのテーブルを再生成したくありません。
私は問題を理解しています。現時点では、コントロールは page_load の後に作成され、イベントが発生しないため、viewstate に保持されません。しかし、どうすればこれを行うことができますか?
これが私のコードです:
protected void Page_Load(object sender, EventArgs e)
{
generateTable(); // When pass just here, it works well
}
private void generateTable()
{
Table tbl = new Table();
// Here I create my table with controls
tableContainer.Controls.Clear(); // tableContainer is a Panel fixed in aspx page
tableContainer.Controls.Add(tbl);
}
protected void txt_TextChanged(object sender, EventArgs e)
{
// Do some stuff to change values in the table
generateTable(); // Re-generate (but events will not be raised)
}
更新 1:
私は何か(開発を複雑にする)について考えましたが、すべての行とコントロールを作成し、page_load ごとに呼び出す generateTable を実行する必要があります。一方、コントロールにデータを入力する別のメソッドを作成しますか? だから、イベントでは、私は 2 番目のものを呼び出します。
しかし、私のテーブルは動的に生成され、イベントの後にコントロールを追加することもできます(テーブルに新しい行とコントロールを作成するドロップダウンリストがあるので、最初に行が表示されないため、ここでも立ち往生していますポストバック ?)