我在维护字符串列表时遇到问题。该列表在 OnInit 中实例化并设置为GridView
. (基本思想是用户在文本框中输入一些内容,然后它会出现在 中GridView
,想多少次就多少次。)
它适用于第一个条目,无论用户输入什么都显示在 中GridView
,尽可能漂亮。但是,在随后的条目中,任何先前输入的值都会消失 -OnInit
再次执行,List<string>
重新实例化,并且先前的值被覆盖。我尝试将OnInit
逻辑移入OnPreInit
,但列表中出现了空引用异常。
这是我正在尝试做的一个人为的例子:
我有一个TextBox
,一个Button
和一个Gridview
:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Add"
onclick="Button1_Click" />
<asp:GridView ID="GridView1" runat="server"
AutoGenerateColumns="true"></asp:GridView>
在后面的代码中:
protected override void OnInit(EventArgs e)
{
List<string> gvValues = new List<string>();
GridView1.DataSource = gvValues;
GridView1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
gvValues.Add(TextBox1.Text);
GridView1.DataBind();
}
我过去创建过对象OnInit
,并且它们的状态持续存在没有问题。显然我在这里遗漏了一些东西。有人请指出我的逻辑中的缺陷并提出实现此功能的方法。