1

我有这个:

<asp:Table id="tbl_Items" runat="server">
</asp:Table>
<asp:Button ID="btn_AddNewItemField" runat="server" Text="Add New Item" 
    onclick="btn_AddNewItemField_Click" />

PageLoad()我添加一行:

            TableRow row = new TableRow();

            TableCell c1 = new TableCell();
            c1.Controls.Add(new TextBox());

            TableCell c2 = new TableCell();
            c2.Controls.Add(new DropDownList());

            row.Cells.Add(c1);
            row.Cells.Add(c2);

            this.tbl_Items.Rows.Add(row);

这有效。
但是当我单击按钮添加新行时,我调用了相同的代码并且代码没有错误但没有任何反应。没有错误,没有行,没有什么。我究竟做错了什么?

4

3 回答 3

1

你需要的是一点状态管理试试这个

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            AddRow(true);
        else
            AddRows();
    }
    protected void btn_AddNewItemField_Click(object sender, EventArgs e)
    {
        AddRow(true);
    }
    void AddRow(bool addCounter)
    {
        TableRow row = new TableRow();

        TableCell c1 = new TableCell();
        c1.Controls.Add(new TextBox());

        TableCell c2 = new TableCell();
        c2.Controls.Add(new DropDownList());

        row.Cells.Add(c1);
        row.Cells.Add(c2);

        this.tbl_Items.Rows.Add(row);

        if (addCounter)
        {
            if (ViewState["rowCount"] == null)
                ViewState["rowCount"] = 1;
            else
            {
                int count = ((int)ViewState["rowCount"]);
                ViewState["rowCount"] = ++count;
            }
        }
    }
    void AddRows()
    {
        if (ViewState["rowCount"] == null)
            return;
        int count = ((int)ViewState["rowCount"]);
        for (int i = 1; i <= count; i++)
        {
            AddRow(false);
        }
    }
于 2013-05-28T07:52:30.503 回答
0

编辑:该职位不会改变任何我认为您还有其他错误的东西;试试这个(这对我有用):

<asp:Table id="tbl_Items" runat="server"></asp:Table>
<asp:Button ID="btn_AddNewItemField" runat="server" Text="Add New Item" />

    protected void Page_Load(object sender, EventArgs e)
    {
        TableRow row = new TableRow();

        TableCell c1 = new TableCell();
        c1.Controls.Add(new TextBox());

        TableCell c2 = new TableCell();
        c2.Controls.Add(new DropDownList());

        row.Cells.Add(c1);
        row.Cells.Add(c2);

        this.tbl_Items.Rows.Add(row);

        btn_AddNewItemField.Click += new EventHandler(btnAddNewItemFieldClick);
    }

    void btnAddNewItemFieldClick(object sender, EventArgs e)
    {
        throw new NotImplementedException();
    }
于 2013-05-28T07:43:42.040 回答
0

“Page_Load”的代码是什么?这可能是由于“回发”的问题。 在某一时刻,当您单击一个按钮时,代码返回到“Page_load”函数会重置。

尝试在 Page_Load 函数中包含带有“if (! IsPostBack) {}”的代码以避免出现问题。

像这样..

Public void Page_Load()
{
     if(!IsPostBack)
     {

        //....Your code
     }

}
于 2013-05-28T07:57:13.437 回答