【发布时间】:2009-04-21 21:12:29
【问题描述】:
在我的页面上,我定义了控件 TextBox1、Label1 和 GridView1。在 GridView1 中,我定义了以下模板:
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton runat="server" Text="Edit" CommandName="Edit" ID="cmdEdit" />
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox Text='<%# Bind("Notes") %>' runat="server" id="textBoxNotes" />
<br /><br />
<asp:LinkButton runat="server" Text="Update"
CommandName="Update" ID="cmdUpdate" />
<asp:LinkButton runat="server" Text="Cancel"
CommandName="Cancel" ID="cmdCancel" />
</EditItemTemplate>
</asp:TemplateField>
如果用户在 textBoxNotes 中输入文本并单击 cmdUpdate 按钮,则在回发时调用 Page_Load() 时该文本将已经可用。
因此,如果用户在点击更新按钮cmdUpdate之前,还在TextBox1中输入了一个字符串“something”,那么下面的代码将提取用户在textBoxNotes中输入的文本
protected void Page_Load(object sender, EventArgs e)
{
if(TextBox1.Text=="text from Notes")
Label1.Text =((TextBox)gridEmployees.Rows[0].Cells[0].FindControl("textBoxNotes")).Text;
}
A) 下面的代码也应该提取用户输入到 textBoxNotes 中的文本,但是当我单击 cmdEdit 按钮时,我得到“对象引用未设置为对象的实例”。异常
protected void Page_Load(object sender, EventArgs e)
{
if(IsPostBack)
Label1.Text =((TextBox)gridEmployees.Rows[0].Cells[0].FindControl("textBoxNotes")).Text;
}
为什么会出现此异常?看起来好像 textBoxNotes 不存在。但它为什么不存在呢?
感谢
【问题讨论】:
标签: c# asp.net gridview viewstate