在UpdatePanel中调用添加变量到GridView导致每次重新创建页面

时间:2011-11-18 23:08:27

标签: asp.net updatepanel

我的页面中有我的代码:

    public partial class Utworz : System.Web.UI.Page
{
    private List<Codes> Codes;
    protected void Page_Load(object sender, EventArgs e)
    {
        this.GridView1.DataSource = Codes;
        Codes = new List<Codes>();
    }

    protected void btn_AddKodManually_Click(object sender, EventArgs e)
    {
        Codes.Add(new Codes(code: this.TextBox1.Text, codeType: this.DropDownList1.SelectedValue));
        this.GridView1.DataBind();
    }
}

我的页面包含UpdatePanel,其中包含表单。我以这种形式键入数据并添加到GridView。 问题是,每当我调用Click方法时,我的页面都是新建的,而我的变量代码也是。为什么这个变量不能保存他的状态?

1 个答案:

答案 0 :(得分:1)

问题#1:每次加载页面时,代码变量都会设置为新对象。它永远不会有多个代码。

问题#2:此处没有任何内容可以将代码列表的值从页面视图保存到页面视图。您需要以某种方式存储它并在每次要重新绑定时检索它。例如,创建一个名为Codes的属性并将值存储在viewstate中。添加新代码后,重新绑定网格。

我知道你可能希望网格保持它的状态,但你每次都要重新绑定一个新对象。其他人可能会在这里发出声响,但您可以通过调用:

来恢复代码对象

Codes = this.GridView1.Datasource