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();
}