Вы не можете получить доступ к значению BoundField
в GridView, если его видимость установлена на Hidden
.Вместо этого добавьте HiddenField
и получите доступ к нему в событии редактирования GridView.
Добавьте приведенное ниже в виде столбца GridView
<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;
}
}
В качестве альтернативыВы также можете получить значение с помощью DataKeyNames , если вы указали его в GridView
.
Получает или задает массив, содержащий имена полей первичного ключа для элементов, отображаемых в элементе управления GridView.
Примерно так:
<asp:GridView ID="GridViewInvoice" runat="server" DataKeyNames="Tax1">
<Columns>
<asp:HiddenField ID="Tax1" runat="server" Value='<%#Eval("Tax1") %>'/>
</Columns>
</asp:GridView>
Затем, чтобы получить значение,
protected void GridViewInvoice_RowEditing(object sender, GridViewEditEventArgs e)
{
var value = GridViewInvoice.DataKeys[e.RowIndex]["Tax1"].ToString();
}