Получить значение определенного столбца при редактировании Gridview, когда для поля поля установлено значение false - PullRequest
0 голосов
/ 20 сентября 2018

Как получить значение определенной ячейки при редактировании вида сетки, когда для поля поля установлено значение false.

<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" />
    </Columns>
</asp:GridView>

1 Ответ

0 голосов
/ 04 октября 2018

Вы не можете получить доступ к значению 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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...