文字列のリストを維持するのに問題があります。リストはOnInitでインスタンス化され、のデータソースとして設定されますGridView
。(基本的な考え方は、ユーザーがテキストボックスに何かを入力すると、それがGridView
何度でもに表示されるというものです。)
ユーザーが入力したものが何であれ、最初のエントリで問題なく機能しGridView
ます。ただし、次のエントリでは、以前に入力された値はすべて消えます-OnInit
再度実行され、List<string>
が再インスタンス化され、以前の値が上書きされます。OnInit
ロジックをに移動しようとしましOnPreInit
たが、リストにNull参照例外が表示されました。
これが私がやろうとしていることの不自然な例です:
私は、、とを持って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
過去にオブジェクトを作成しましたが、それらの状態が持続することに問題はありませんでした。明らかに、私はここで何かが欠けています。誰かが私のロジックの欠陥を指摘し、この機能を実現する方法を提案してください。