1

aspx ページに、asp.net TableRow オブジェクトを含む asp.net テーブル コントロールがあります。

私の目的は、いくつかの画像ボタンをクリックして、このテーブルに列を動的に追加することです。このテーブルはいくつかの TableRow オブジェクトで構成され、それぞれにデフォルトでラベル付きの ASP.NET TableCell が含まれています。画像ボタンをクリックして列を追加しようとしていますが、おそらく行のセルコレクションに新しいセルを追加しています。たとえば、特定の行のドロップダウン リストを含む列を追加する場合は、次のようにします。

DropDownList ddl = new DropDownList();
            TableCell tableCell= new TableCell();
            tableCell.Controls.Add(ddl);
            tableRow.Cells.Add(tableCell);

問題は、作成したasp.netの「AddColumn」ボタンをクリックするたびに、ライフサイクルのどこかでハンドラーに到達する前に、TableRowオブジェクトがそのコレクションとともに死ぬため、追加された1つの列を超えることができないことです。セルの。行オブジェクトのコピーをセッションに保存することを考えましたが、保存を行う正しい時点が思いつきません。

とにかく-asp.netはすべてをviewstateに保持するはずではありませんか? 助けて解決策を提供してください。私は完全に混乱しています。

ASPX btw は次のようになります。

<asp:TableRow runat="server" ID="RequestorEmailRow">
                        <asp:TableCell runat="server" Text="...">
                        </asp:TableCell>
                    </asp:TableRow>
4

1 に答える 1

1

ASP.NET ビューステートは、コントロール自体の存在ではなく、コントロールの値のみを保存します。Page_Initビューステートは と の間で逆シリアル化されPage_Loadます。<asp:スタイル オブジェクトを Web ページに動的に追加する場合は、それらを で再作成する必要がPage_Initあります。そうしないと、ASP.NET はビューステートを処理しません。

より適切なアプローチは、(ツールボックスの「データ」セクションにある) コントロールを使用することGridViewです。asp:Tableasp:GridView

于 2011-06-01T09:23:51.060 に答える