none
Comparar valor da Gridview com um textbox RRS feed

  • Pergunta

  • Amigos boa noite!,

    Gostaria de uma ajuda, estou finalizando uma aplicação para controle de estoque, e tenho uma parte onde há as requisições de fornecimentos.

    Exemplo: 

    Quantidade Solicitada x Quantidade Atendida.

    Sendo que o campo quantidade solicitada é obtida via select e setado na gridview e a quantidade atendida é um texbox que eu informo um valor que não ultrapasse a quantidade disponível.

    Sendo assim como eu consigo em um Gridview comparar o valor do textbox (quantidade atendida) com o label(quantidade solicitada)?


    Fico no aguardo, desde já obrigado!

    Att,

    quinta-feira, 6 de abril de 2017 23:18

Respostas

  • Consegui fazer de outra forma, estou postando para futuras dúvidas.

    Desde já agradeço Rodrigo e Robson, pelas respostas.

    Alterei apenas o código de validação

    TextBox txtQtdeAtendida = (TextBox)sender;
            GridViewRow currentRow = (GridViewRow)txtQtdeAtendida.Parent.Parent;
            int rowindex = 0;
            rowindex = currentRow.RowIndex;
     
            Label lblQtdeRequisitada = (Label)currentRow.FindControl("lblQtdeRequisitada");
     
            int requisitada = Convert.ToInt32(lblQtdeRequisitada.Text);
            int atendida = Convert.ToInt32(txtQtdeAtendida.Text);
     
     
            if (atendida > requisitada)
            {
                lblMensagem.Text = "Operação inválida";
            }
            else
            {
                lblMensagem.Text = "OK";
            }

    sábado, 8 de abril de 2017 15:32

Todas as Respostas

  • Bom dia Elton,

    Obrigado pela participação no Fórum MSDN.

    A comparação deve ser feita entre o valor da textbox e da label?

    Atenciosamente,


    Robson William Silva

    Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 7 de abril de 2017 13:26
    Moderador
  • Oi Elton, tudo bom?

    Recupere o valor da textbox e jogue em uma variável:
    var ex1 = Convert.ToDecimal(textbox1.Text);
    recupera o valor do grid e jogue em uma váriavel

    var ex2 = GridView1.Rows[0].Cells[0].Text;//no rows vc coloca o index da linha que vc quer recuperar, no cell o index da coluna que vc quer recuperar
    OU se for uma linha selecionável:
    var ex2 = this.GridView1.SelectedRow.Cells[0].Text;//colocar o index da coluna

    Após isso, basta comparar as variáveis

    if(ex1>ex2)
    {

    }

    ok?


    Se a resposta for relevante,click em "útil".Se a resposta resolveu seu problema, click em "Marcar como Resposta".
    Rodrigo Suleiman [MCP,MCTS,MCPD,MCSA,MCSD]

    sexta-feira, 7 de abril de 2017 13:32
  • Opa bom dia!

    Cara não consegui da forma que você falou, eu coloquei um texbox e acionei o evento TextChanged porém não consigo obter o valor da coluna referência.

    <asp:GridView ID="GridRequisicaoItens" runat="server" AutoGenerateColumns="False" OnRowDataBound="GridRequisicaoItens_RowDataBound">

           <Columns>
               <asp:TemplateField>
                   <ItemTemplate>
                       <asp:TextBox ID="txtQtdeAtendida" runat="server" OnTextChanged="txtQtdeAtendida_TextChanged" AutoPostBack="True"></asp:TextBox>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:TemplateField>
                   <ItemTemplate>
                       <asp:Label ID="lblQtdeRequisitada" runat="server" Text='<%# Eval("QTDE_PRODUTO_REQUISICAO_ITEM"%>'></asp:Label>
                   </ItemTemplate>
               </asp:TemplateField>
               <asp:ButtonField Text="Botão" />
           </Columns>
       </asp:GridView>

    Código do evento textchanged 

    Label lblQtdeRequisitada = (Label)GridRequisicaoItens.FindControl("lblQtdeRequisitada");       TextBox txtQtdeAtendida = (TextBox)sender;       int requisitada = Convert.ToInt32(lblQtdeRequisitada.Text);       int atendida = Convert.ToInt32(txtQtdeAtendida.Text);       //int ex2 = lblQtdeRequisitada;if (atendida > requisitada)       {           lblMensagem.Text = "Operação inválida";       }       else       {           lblMensagem.Text = "OK";       }

    Porém me retorna a mensagem "Object reference not set to an instance of an object.


          

    sábado, 8 de abril de 2017 14:23
  • Consegui fazer de outra forma, estou postando para futuras dúvidas.

    Desde já agradeço Rodrigo e Robson, pelas respostas.

    Alterei apenas o código de validação

    TextBox txtQtdeAtendida = (TextBox)sender;
            GridViewRow currentRow = (GridViewRow)txtQtdeAtendida.Parent.Parent;
            int rowindex = 0;
            rowindex = currentRow.RowIndex;
     
            Label lblQtdeRequisitada = (Label)currentRow.FindControl("lblQtdeRequisitada");
     
            int requisitada = Convert.ToInt32(lblQtdeRequisitada.Text);
            int atendida = Convert.ToInt32(txtQtdeAtendida.Text);
     
     
            if (atendida > requisitada)
            {
                lblMensagem.Text = "Operação inválida";
            }
            else
            {
                lblMensagem.Text = "OK";
            }

    sábado, 8 de abril de 2017 15:32