当前位置:编程学习 > C#/ASP.NET >>

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
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,