C#实现增行的问题,如何反复执行增加?这代码只增加一次就结束了!
private void Button1_Click(object sender, System.EventArgs e){
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Text="hm";
tc.CssClass="tdall";
tr.Cells.Add(tc);
Table1.Rows.Add(tr);
}
我想要点一次增加一行,在点一次又增加一行,而且所增加的行自动在服务器中读取.
写入的数据,写入到数据库! --------------------编程问答-------------------- 写了个例子:
<asp:Table ID="Table1" runat="server"></asp:Table>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" UseSubmitBehavior="False" />
private string[] datas //你可以用数据库实现datas
{
get
{
return (string[])ViewState["data"];
}
set
{
ViewState["data"] = value;
}
}
private bool _SubCreated=false;
private bool SubControlsCreated
{
get
{
return _SubCreated;
}
set
{
if (!value)
this.Table1.Rows.Clear();
_SubCreated = value;
}
}
private TextBox InputTextbox;
private void CreateSubControls()
{
SubControlsCreated = true;
this.Table1.Rows.Clear();
TableRow itr = new TableRow();
TableCell itc = new TableCell();
itr.Cells.Add(itc);
Table1.Rows.Add(itr);
InputTextbox = new TextBox();
InputTextbox.ID = "AddTheValue";
itc.Controls.Add(InputTextbox);
InputTextbox.Attributes["onkeydown"] = "if(event.keyCode==13)" +
this.Page.ClientScript.GetPostBackEventReference(this.Button1, "");
string[] dt = datas;
if (dt != null)
for (int i = 0; i < dt.Length; i++)
{
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tr.Cells.Add(tc);
Table1.Rows.Add(tr);
tc.Text = dt[i];
}
}
protected void Button1_Click(object sender, EventArgs e)
{
string[] dt;
if (datas == null)
dt = new string[1];
else
{
dt = new string[datas.Length + 1];
datas.CopyTo(dt, 0);
}
dt[dt.Length - 1] = InputTextbox.Text;
datas = dt;
SubControlsCreated = false;
}
protected void Page_Load(object sender, EventArgs e)
{
this.SmartNavigation = true;
if (!this.SubControlsCreated)
CreateSubControls();
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if (!this.SubControlsCreated)
CreateSubControls();
}
--------------------编程问答-------------------- 除了你的代码中的Table1、Button1,我将所有其他东西都变成动态装载的。 --------------------编程问答-------------------- SubControlsCreated = false;
这是要点,每当数据改变的时候,不要重建控件,而只应该设置此标志。 --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 出错误了,提示this.Page不包含ClientScript的定义!而且buttion不包含UseSubmitBehavior属性!
能否给出所有代码,包括using.谢谢了~~~~~~ --------------------编程问答-------------------- 能问一下,这ClientScript和button中的那属性是什么意思吗?我还是不太明白!
page_load中已经默认有private的定义,是不是要删除? --------------------编程问答-------------------- 对了大哥,你这ClientScript是在.net2.0中才有,我现在用的是1.1
说要用RegisterClientScriptBlock方法 --------------------编程问答-------------------- Page.ClientScript.GetPostBackEventReference
Page.GetPostBackEventReference --------------------编程问答-------------------- 楼上什么意思?要我把ClientScript去掉吗? --------------------编程问答-------------------- 去掉?
第一个是你说的“在.net2.0中才有”,第二个是两个版本都有。我是希望你自己看msn上他们的关系。 --------------------编程问答-------------------- mark
补充:.NET技术 , ASP.NET