2012-05-12 24 views
1

ボタンをクリックしたときに、新しいセルとTextBoxを追加したいとします。しかし、現在の行のボタンをクリックすると、そのセルとTextBoxが削除され、新しいものが追加されます。ボタンがクリックされたときにテーブルにテキストボックスを追加する方法

マークアップ:

<form id="form1" runat="server"> 
<div> 
    <asp:Panel ID="pnlForTextBoxes" runat="server"> 
    </asp:Panel> 
    <asp:DropDownList ID="ddlNumbers" runat="server" Height="16px" Width="143px"> 
     <asp:ListItem>1</asp:ListItem> 
     <asp:ListItem>2</asp:ListItem> 
     <asp:ListItem>3</asp:ListItem> 
     <asp:ListItem>4</asp:ListItem> 
     <asp:ListItem>5</asp:ListItem> 
    </asp:DropDownList>`enter code here` 
    <asp:Table ID="myActualTable" runat="server"> 
    </asp:Table> 
    <br /> 
    <asp:Button ID="cmdAddTextBox" runat="server" Text="Add" OnClick="cmdAddTextBox_Click" /> 
</div> 
</form> 

コード:

protected void cmdAddTextBox_Click(object sender, EventArgs e) 
{ 
    TableRow myRow = new TableRow(); 
    myRow.ID = "row" + ddlNumbers.SelectedValue.ToString(); 
    TableCell myCell = new TableCell(); 
    myCell.ID = "cell" + ddlNumbers.SelectedValue.ToString(); 
    TextBox myTextBox = new TextBox(); 
    myTextBox.ID = "txt" + ddlNumbers.SelectedValue.ToString(); 
    myTextBox.Text = "TextBox number " + ddlNumbers.SelectedValue.ToString(); 
    myCell.Controls.Add(myTextBox); 
    myRow.Cells.Add(myCell); 
    myActualTable.Rows.Add(myRow); 

    myTextBox.Dispose(); 
    myCell.Dispose(); 
    myRow.Dispose(); 
} 
+0

[DataGrid](http://msdn.microsoft.com/en-us/library/system.web.ui)のようなコントロールでカスタムビルドテーブルを置き換えると、あなたのライブをもっと簡単にすることができると思います.webcontrols.datagrid)または[GridView](http://msdn.microsoft.com/en-us/library/4w7ya1ts)を参照してください。これは、行の追加、削除、編集のためのすぐに使用できる機能を提供します。 – Filburt

答えて

2

古いテキストボックスとセルは、マークアップに提示されていないためです。ご存知のように、すべてのポストバックページオブジェクトが作成され、ページ上の最後の変更についてはわかりません。 回避策があります。 ページの読み込みイベントでは、これがポストバックかどうかを確認してから、viewstateをチェックするか、以前のテキストボックスとセルを隠しフィールドカウンターを再確認してください。最後に指定された名前とIDを指定して、ビューステートで値を復元できるようにする方が効果的です。 その後、以前のものを失うことなく新しいonemを作成することができます。

+0

ありがとうございます。私はまた私のページのCheckBoxListを持って、私はこれを使用します。 –

+0

あなたがうまくいけば、答えとしてマークすることを忘れないでください。 –

関連する問題