C# 编辑gridview时出错
我有一个带有编辑和删除的gridview 当我单击gridview行中的Edit时,我得到对象引用未设置为这一行代码中对象的实例: 有人能帮我吗? 先谢谢你 我的用于gridview的aspx是:C# 编辑gridview时出错,c#,asp.net,gridview,C#,Asp.net,Gridview,我有一个带有编辑和删除的gridview 当我单击gridview行中的Edit时,我得到对象引用未设置为这一行代码中对象的实例: 有人能帮我吗? 先谢谢你 我的用于gridview的aspx是: protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.DataRow) { Image
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
ImageButton imgbtnEdit = (ImageButton)e.Row.FindControl("imgbtnEdit");
Label testing = (Label)e.Row.FindControl("testing");
if (!string.IsNullOrEmpty(testing.Text.ToString()))
{
imgbtnEdit.Enabled = true;
}
}
}
<asp:TemplateField>
<ItemTemplate>
<center>
<asp:ImageButton ID="imgbtnEdit" CommandName="Edit" runat="server" ImageUrl="/Images/icon.gif" Enabled="false" />
</center>
</ItemTemplate>
<EditItemTemplate>
<center>
<asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="/Images/update.gif" />
<asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="/Images/delete.gif" />
</EditItemTemplate>
</asp:TemplateField>
受保护的无效GridView1\u行数据绑定(对象发送方,GridViewRowEventArgs e)
{
如果(e.Row.RowType==DataControlRowType.DataRow)
{
ImageButton imgbtnEdit=(ImageButton)e.Row.FindControl(“imgbtnEdit”);
标签测试=(标签)e.Row.FindControl(“测试”);
如果(!string.IsNullOrEmpty(testing.Text.ToString()))
{
imgbtnEdit.Enabled=true;
}
}
}
在rowdatabound中
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (isInEditMode == true)
{
//get references to the controls in EditItemTemplates
}
else
{
//get references to the controls in ItemTemplates
}
}
这样,您就不会试图引用不存在的控件-这取决于您是查看还是编辑gridview。在我的aspx代码中不重复imgbted它在ItemTemplate中。当您进入编辑模式时,这不会呈现-因此无法找到控件。您的意思是什么?谢谢,您是如何解决的?我已在我的答案中添加了一些内容。非常感谢您的帮助!
<asp:TemplateField>
<ItemTemplate>
<center>
<asp:ImageButton ID="imgbtnEdit" CommandName="Edit" runat="server" ImageUrl="/Images/icon.gif" Enabled="false" /></center>
</ItemTemplate>
<EditItemTemplate>
<center>
<asp:ImageButton ID="imgbtnUpdate" CommandName="Update" runat="server" ImageUrl="/Images/update.gif" />
<asp:ImageButton ID="imgbtnCancel" runat="server" CommandName="Cancel" ImageUrl="/Images/delete.gif" />
</EditItemTemplate>
</asp:TemplateField>
protected void GridView1_rowEditing(object sender, GridViewEditEventArgs e)
{
isInEditMode = true;
GridView1.EditIndex = e.NewEditIndex;
//rebind GridView1
}
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (isInEditMode == true)
{
//get references to the controls in EditItemTemplates
}
else
{
//get references to the controls in ItemTemplates
}
}