Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 编辑gridview时出错_C#_Asp.net_Gridview - Fatal编程技术网

C# 编辑gridview时出错

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

我有一个带有编辑删除的gridview

当我单击gridview行中的Edit时,我得到对象引用未设置为这一行代码中对象的实例:

有人能帮我吗? 先谢谢你

我的用于gridview的aspx是:

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
    }
}