4

ASP.net テーブルがあり、実行時にテーブルの行とセルを動的に追加し、これらのセルにコントロール (テキスト ボックスとラベル) を追加しています。OnInit イベントでこれらのコントロールを作成して入力しています。これらのコントロールが自動的に表示状態に保存されることを期待しています。しかし、そうではありません!ポストバックごとにテーブルがリセットされ、空に見えます。

コントロールをキャッシュまたはセッションに保存するか、それらを手動でビューステートに追加し、それらの値を手動でビューステートに保存するなど、多くのソリューションを読みましたが、簡単なソリューションが必要です。asp.net コンポーネントをドラッグ ドロップして、その状態を維持することを忘れたときのように。

ありがとう

4

2 に答える 2

1

毎回テーブルを再構築する必要があります。Page_Load イベントで行とセルを作成してみてください。次のような asp:table サーバー側コントロールがあると仮定しています。

<asp:Table ID="table" runat="server" />

その場合、Page_Load でコントロールを追加し、次のように値を設定できます。

    protected void Page_Load(object sender, EventArgs e)
    {
        TableRow row = new TableRow();
        TableCell cell = new TableCell();
        cell.Controls.Add(new TextBox());
        row.Cells.Add(cell);
        table.Rows.Add(row);
    }

うまくいくか試してみませんか?

于 2012-08-31T16:06:01.320 に答える
0

tranceporter が提案したように、毎回テーブル コントロールを追加する必要があります。ただし、ポストバック間でビューステートを維持したい場合は、PreInit イベントでテーブルを再構築する必要があります。

protected void Page_PreInit(object sender, EventArgs e)
{
    TableRow row = new TableRow();
    TableCell cell = new TableCell();
    cell.Controls.Add(new TextBox());
    row.Cells.Add(cell);
    table.Rows.Add(row);
}

コントロールが PreInit イベントで作成された場合、ASP.NET フレームワークは、ページの Init および Load イベントが発生する前に、viewstate をコントロールに適用します。ASP.NET ページのライフ サイクルの詳細については、次を参照してください。

http://msdn.microsoft.com/en-us/library/ms178472(v=VS.100).aspx

于 2012-08-31T16:13:10.330 に答える