2012-05-12 171 views
1

單擊按鈕時,我想添加一個新單元格和一個文本框。但是當我單擊當前行中的按鈕時,它的單元格和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/zh-cn/library/4w7ya1ts),它們提供了用於添加,刪除和編輯行的即用功能。 – Filburt

回答

2

這是因爲舊的文本框,細胞不上的標記呈現。正如你所知道的,每個回發頁面對象都被創建,並且它不知道頁面上的最後更改。 有一個解決方法。 在頁面加載事件你必須檢查,如果這是回發已經,然後檢查你的視圖狀態,或一些隱藏的領域櫃檯與以前的文本框和單元格cound並再次重新創建它們。更好地指定上次指定的名稱和標識,以允許視圖狀態恢復值。 只有在此之後,您才能創建新的onem而不會丟失之前的文件。

+0

謝謝。我的網頁中也會有CheckBoxList,我會用這個。 –

+0

我們歡迎您,如果它適合您,請不要忘記標記爲答案。 –

相關問題