You cannot access the BoundField value in GridView if its visibility is set to Hidden. Instead, Add a HiddenField and access that in GridView Edit Event.
Add the below as a GridView Column
<asp:GridView ID="GridViewInvoice" runat="server" ShowHeaderWhenEmpty="true" DataKeyNames="DOID" AutoGenerateColumns="False" CssClass="mGrid" HeaderStyle-CssClass="th" PagerStyle-CssClass="pgr"
Width="100%" BorderStyle="Solid" Style="overflow: auto" OnRowDataBound="GridViewInvoice_RowDataBound" OnRowEditing="GridViewInvoice_RowEditing" OnRowDeleting="GridViewInvoice_RowDeleting">
<AlternatingRowStyle BackColor="#CCCCFF" />
<Columns>
<asp:BoundField DataField="Tax1" Visible="false" HeaderText="Tax1" SortExpression="Tax1" HeaderStyle-Width="7%" ItemStyle-CssClass="colHidden" HeaderStyle-CssClass="colHidden" ItemStyle-HorizontalAlign="Right" ReadOnly="false" />
<asp:HiddenField ID="Tax1" runat="server" Value='<%#Eval("Tax1") %>'/>
</Columns>
</asp:GridView>
Code-Behind
protected void GridViewInvoice_RowEditing(object sender, GridViewEditEventArgs e)
{
HiddenField hf = (HiddenField)GridViewInvoice.Rows[e.RowIndex].FindControl("Tax1");
if (hf != null)
{
var value = hf.Value;
}
}
Alternatively, you can also get the value with DataKeyNames if you have specified one in the GridView.
Gets or sets an array that contains the names of the primary key
fields for the items displayed in a GridView control.
Something like this,
<asp:GridView ID="GridViewInvoice" runat="server" DataKeyNames="Tax1">
<Columns>
<asp:HiddenField ID="Tax1" runat="server" Value='<%#Eval("Tax1") %>'/>
</Columns>
</asp:GridView>
Then this to get the value,
protected void GridViewInvoice_RowEditing(object sender, GridViewEditEventArgs e)
{
var value = GridViewInvoice.DataKeys[e.RowIndex]["Tax1"].ToString();
}