C# gridview中的行删除事件给定错误

C# gridview中的行删除事件给定错误,c#,asp.net,gridview,C#,Asp.net,Gridview,从gridview中删除行时,将引发与此消息相关的错误: 指定的参数超出了有效值的范围 aspx代码 <asp:GridView runat="server" ID="gridviewEditProformaInvoice" OnRowEditing="gridviewEditProformaInvoice_RowEditing" AutoGenerateEditButton="true" OnRowCanc

从gridview中删除行时,将引发与此消息相关的错误:

指定的参数超出了有效值的范围

aspx代码

<asp:GridView runat="server" ID="gridviewEditProformaInvoice" OnRowEditing="gridviewEditProformaInvoice_RowEditing" AutoGenerateEditButton="true"  OnRowCancelingEdit="gridviewEditProformaInvoice_RowCancelingEdit" AutoGenerateDeleteButton="true" OnRowUpdating="gridviewEditProformaInvoice_RowUpdating" OnRowDeleting="gridviewEditProformaInvoice_RowDeleting" ></asp:GridView>

在哪一行出现此错误?字符串uniqueid=(行。单元格[2]。控件[0]为文本框)。文本//error@krishnamohan-如果您知道它是一个文本框,为什么不使用
FindControl
方法呢?为了避免索引引起的这些明显的异常?但它的自动生成列是真的。@krishnamohan-那为什么要将它键入文本框控件呢?如果您的
uniqueid
位于第三列,只需使用
row.cells[2].Text即可。
protected void gridviewEditProformaInvoice_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["abc"].ConnectionString);
     GridViewRow row = gridviewEditProformaInvoice.Rows[e.RowIndex];
           
     string uniqueid = (row.Cells[2].Controls[0] as TextBox).Text;
     SqlCommand cmd = new SqlCommand(@"delete from tbl_proformaDetails WHERE uniqueid ='" + uniqueid + "'", abc);
}