单击按钮时如何向表中添加文本框

时间:2012-05-12 07:12:12

标签: c# asp.net

我想在单击按钮时将新单元格和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();
}

1 个答案:

答案 0 :(得分:2)

这是因为旧文本框和单元格未显示在标记上。如您所知,每个回发页面对象都已创建,并且它不知道页面上的最后更改。 有一个解决方法。 在页面加载事件中,你必须检查,如果这已经是回发,那么检查你的视图状态,或一些隐藏的字段计数器与前一个文本框和单元格cound并再次重新创建它们。更好地指定上次指定的名称和ID,以允许viewstate恢复值。 只有在那之后你才能创造出新的一分而不会丢失之前的。