When i am deleting row from gridview ,then below error is coming
Index was out of range. Must be non-negative and less than the size of the collection. Parameter name: index
<asp:GridView ID="gvtrans" runat="server" AllowSorting="True" AutoGenerateColumns="False" BackColor="White" BorderColor="#E7E7FF"
BorderStyle="None" BorderWidth="1px" CellPadding="3" CssClass="active right" GridLines="Horizontal" itemstyle-wrap="True"
OnRowDataBound="gvtrans_RowDataBound" ShowFooter="True" ShowHeaderWhenEmpty="True" Style="margin-top: 0px" Width="667px" Height="86px"
OnRowDeleting="gvtrans_RowDeleting">
<AlternatingRowStyle BackColor="#F7F7F7" CssClass="altrowstyle" />
<FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
<HeaderStyle BackColor="#4A3C8C" CssClass="headerstyle" Font-Bold="True" ForeColor="#F7F7F7" />
<PagerStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" HorizontalAlign="Right" />
<RowStyle BackColor="#E7E7FF" CssClass="rowstyle" ForeColor="#4A3C8C" />
<Columns>
<asp:BoundField DataField="RowNumber" HeaderText="S.NO" />
<asp:TemplateField HeaderText="Code" >
<ItemTemplate>
<asp:TextBox ID="txtcode" runat="server" Width="40px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Bank">
<ItemTemplate>
<asp:Label ID="lbbank" runat="server" />
<asp:DropDownList ID="ddlbank" runat="server" AutoPostBack="true" OnTextChanged="ddlbank_TextChanged" CssClass="form-control js-example-placeholder-single" Height="85px" ToolTip="Select " Width="150px">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Loc_ID" >
<ItemTemplate>
<asp:TextBox ID="txtbank_id" runat="server" Width="50px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Location">
<ItemTemplate>
<asp:Label ID="lbloc" runat="server" Visible="false" />
<asp:DropDownList ID="ddloc" runat="server" AutoPostBack="true" OnTextChanged="ddloc_TextChanged" CssClass="form-control js-example-placeholder-single" Height="85px" ToolTip="Select " Width="150px">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Cheque_No">
<ItemTemplate>
<asp:TextBox ID="txtChqno" runat="server" Width="130px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Date">
<ItemTemplate>
<asp:TextBox ID="txtDate" runat="server" TextMode="Date" Width="130px"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Amount">
<ItemTemplate>
<asp:TextBox ID="txtamount" runat="server" AutoPostBack="true" Text="0" OnTextChanged="txtamount_TextChanged" Width="130px"></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:Label ID="lblTotal" runat="server"></asp:Label>
</FooterTemplate>
</asp:TemplateField>
<asp:CommandField ShowDeleteButton="True" ButtonType="Button" />
</Columns>
<SelectedRowStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
<SortedAscendingCellStyle BackColor="#F4F4FD" />
<SortedAscendingHeaderStyle BackColor="#5A4C9D" />
<SortedDescendingCellStyle BackColor="#D8D8F0" />
<SortedDescendingHeaderStyle BackColor="#3E3277" />
</asp:GridView>
C#
protected void gvtrans_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
string index = gvtrans.DataKeys[e.RowIndex].Values[1].ToString();
DataTable dt = ViewState["CurrentTable"] as DataTable;
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["Index"].ToString() == index)
{
dt.Rows.Remove(dt.Rows[i]);
ViewState["CurrentTable"] = dt;
gvtrans.DataSource = dt;
gvtrans.DataBind();
}
}
}