none
Pegar o click do Checkbox em GridView RRS feed

  • Pergunta

  • Tenho um checkbox em um gridview, que o usuário vai selecionar, as que forem do seu critério, e eu preciso que ao selecionar o checkbox, ele vá somando o valor e jogue em um checkbox, aqui está o meu gridview:

    <asp:GridView ID="GridContas" runat="server" Style="overflow-y: auto" AllowPaging="True" AutoGenerateColumns="False" CellPadding="4" CssClass="table table-responsive table-hover table-striped" GridLines="None" DataKeyNames="id" PageSize="1000000" OnDataBound="GridContas_DataBound"
      OnPageIndexChanging="GridContas_PageIndexChanging" OnRowCommand="GridContas_RowCommand" OnRowDataBound="GridContas_RowDataBound" OnRowDeleting="GridContas_RowDeleting" OnSelectedIndexChanged="GridContas_SelectedIndexChanged">
      <Columns>
        <asp:TemplateField>
          <ItemTemplate>
            <asp:CheckBox ID="CheckBox1" AutoPostBack="true" runat="server" />
          </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="id" HeaderText="ID" SortExpression="id" />
        <asp:BoundField DataField="observacao" HeaderText="Observação" SortExpression="id" HeaderStyle-Font-Bold="true">
          <HeaderStyle Font-Bold="True"></HeaderStyle>
        </asp:BoundField>
        <asp:BoundField DataField="Vencimento" HeaderText="Vencimento" SortExpression="vencimento" DataFormatString="{0:d}" HeaderStyle-Font-Bold="true">
          <HeaderStyle Font-Bold="True"></HeaderStyle>
        </asp:BoundField>
        <asp:BoundField DataField="valor_pago" HeaderText="Valor" SortExpression="valor_pago" HeaderStyle-Font-Bold="true">
          <HeaderStyle Font-Bold="True"></HeaderStyle>
        </asp:BoundField>
      </Columns>
    </asp:GridView>

    E aqui o código que cheguei, para jogar no textbox.

    if (e.Row.RowType == DataControlRowType.DataRow) {
      foreach(GridViewRow rows in GridContas.Rows) {
        CheckBox chkSelect = (CheckBox) e.Row.FindControl("CheckBox1");
        Label lblValor = (Label) e.Row.FindControl("valor_pago");
        if (chkSelect.Checked) {
          ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('Teste!');", true);
          txtValor.Text = Convert.ToDecimal(lblValor.Text) + txtValor.Text;
        }
      }
    }

    Eu coloquei ele no evento RowDataBound do GridView, porém não funcionou. Preciso que ao clicar, ele já vá somando automático, já vi vários exemplos, mas nenhum com soma em tempo real. 

    Tentei colocar até um alert, pra ver se era o código que estava errado, porém nem assim ocorreu o alert. Como posso fazer para clicar já ir somando ?

    segunda-feira, 30 de abril de 2018 20:47

Respostas

  • Mariana C. Costa,

       Por favor, veja:

    =================================================

    Allow only one check box checked in gridview
    ASP.NET
    https://www.codeproject.com/Questions/202279/Allow-only-one-check-box-checked-in-gridview

    =================================================

    How to check a checkbox on gridview row click ?
    https://forums.asp.net/t/1817675.aspx?How+to+check+a+checkbox+on+gridview+row+click+

    MARKUP

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/javascript" src="../Scripts/jquery-1.7.2.js"></script>
        <script type="text/javascript">
            $(function () {
                $('tr.dataRow').on('click', function () {
                    var checked = $(this).find('input[id*=checkBox]').prop('checked');
                    $(this).find('input[id*=checkBox]').prop('checked',!checked);
    
                });
            });
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:GridView ID="GridView1" runat="server"
                           AutoGenerateColumns="false" OnRowCreated="GridView1_RowCreated">
                <Columns>
                    <asp:TemplateField>
                        <ItemTemplate>
                            <asp:CheckBox ID="checkBox" runat="server" />
                         </ItemTemplate>
                    </asp:TemplateField>
                    <asp:BoundField DataField="ID" HeaderText="ID" />
                    <asp:BoundField DataField="Name" HeaderText="Name" />
                </Columns>
                
            </asp:GridView>
        </div>
        </form>
    </body>
    </html>

    CODE BEHIND

    public partial class TestForm : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack)
                {
                    var data = new List<TestData>()
                                    {
                                        new TestData { ID = 1, Name = "Test1"},
                                        new TestData { ID = 2, Name = "Test2"}
                                    };
                    GridView1.DataSource = data;
                    GridView1.DataBind();
                }
            }
    
            protected void GridView1_RowCreated(object sender, GridViewRowEventArgs e)
            {
                if(e.Row.RowType == DataControlRowType.DataRow)
                {
                    e.Row.CssClass = "dataRow";
                }
                
            }
        }
    
        public class TestData
        {
            public int ID { get; set; }
    
            public string Name { get; set; }
        }

    =================================================

        Veja também:

    =================================================

    ASP.NET - Excluindo registros no GridView com Checkbox

    Vamos construir neste artigo uma interface para excluir registros de forma a apresentar ao usuário em um GridView a relação dos registros para exclusão permitindo que seja feita uma seleção dos registros a serem excluídos através da utilização do controle CheckBox.

    http://www.macoratti.net/08/03/aspn_erg.htm

    =================================================

    Utilizando o CheckBox no GridView
    http://devbrasil.net/profiles/blogs/utilizando-o-checkbox-no

    =================================================

    []'s,
    Fabio I.

    • Editado Fabio I terça-feira, 1 de maio de 2018 13:53
    • Marcado como Resposta Mariana C. Costa quarta-feira, 2 de maio de 2018 11:50
    terça-feira, 1 de maio de 2018 13:50