mardi 5 novembre 2019

How can I update all the selected rows in Asp GridView with a button located outside of the GridView?

I looked for some similar questions, but found only ListView solutions

But I have a GridView and a button outside of the GridView and need to udate only records specified by a selected checkbox.

<asp:GridView ID="gvData"
  runat="server" Width = "850px"
  CellPadding="5"
  AutoGenerateColumns="false"
  AllowPaging ="true"
  OnPageIndexChanging ="OnPaging" PageSize="5"> 
    <HeaderStyle CssClass="HeaderStyle" />
    <PagerStyle CssClass="HeaderStyle" HorizontalAlign="Center" />
    <AlternatingRowStyle CssClass="AlternatingRowStyle" />
    <RowStyle CssClass="RowStyle" />
    <RowStyle HorizontalAlign="Left" />
 <Columns>
    <asp:TemplateField HeaderText="Id" ItemStyle-Width="20px" Visible="false">
        <ItemTemplate>
            <asp:Label ID="lblId" runat="server" Text='<%# Eval("id") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Select" ItemStyle-Width="20px">
        <ItemTemplate>
            <asp:CheckBox ID="chkSelect" runat="server" Checked = "false"></asp:CheckBox>
        </ItemTemplate>
    </asp:TemplateField>
    <asp:TemplateField HeaderText="Message" ItemStyle-Width="200px">
        <ItemTemplate>
            <asp:Label ID="lblMessage" runat="server"  Width="500px" Text='<%# Eval("Message") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>
  </Columns>
</asp:GridView>
<br />

<div style="text-align:left;">
   <asp:Button ID="btnChange" runat="server" Text="Change Type" OnClick="btnChange_Click" />
</div>

I have a method btnChange_Click():

protected void btnChange_Click()
{

    int index = gvFailedMerchants.SelectedRow.RowIndex;

    DbConnection.UpdateMessageType(index);

}

When I click the button, I'm getting the message

"Object reference not set to an instance of an object"

I do not know what is the right approach to the problem.

How can I do that?




Aucun commentaire:

Enregistrer un commentaire