我有这个:
<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);
这很有效 但是,当我点击按钮添加新行时,我称之为相同的代码,代码没有错误,但没有任何反应。没有错误,没有行,没有什么。 我做错了什么?
答案 0 :(得分: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);
}
}
答案 1 :(得分: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();
}
答案 2 :(得分:0)
“Page_Load”的代码是什么? 这可能是由于“回发”问题。 当您单击按钮时,代码返回到“Page_load”函数重置一次。
尝试在您的Page_Load函数中包含代码“if(!IsPostBack){}”以避免出现问题。
像这样......Public void Page_Load()
{
if(!IsPostBack)
{
//....Your code
}
}