none
Excluir Linha do GridView RRS feed

  • Pergunta

  • Bom dia à todos!!!

    Hoje estou com o seguinte problema:

     

    Tenho um GridView, e este tem uma coluna com botões de Editar, Visualizar e Excluir que são adicionados manualmente, com o TemplateField

    Vejam:

    <asp:TemplateField>
                <ItemStyle Width="10px" HorizontalAlign="Center" />
                <ItemTemplate>
                  <asp:ImageButton ID="imgBtEditar" OnClick="imgBtEditar_Click" runat="server" CommandArgument='<%#Eval("IDFeriado") %>'
                    CausesValidation="false" ImageUrl="~/App_Imagens/icons/lapis.png" AlternateText="Editar Feriado"
                    ToolTip="Editar Feriado" />
                </ItemTemplate>
              </asp:TemplateField>
              <asp:TemplateField>
                <ItemTemplate>
                  <asp:ImageButton ID="imgBtVisualizar" OnClick="imgBtVisualizar_Click" runat="server"
                    CommandArgument='<%#Eval("IDFeriado") %>' CausesValidation="false" ImageUrl="~/App_Imagens/icons/lupa.png"
                    AlternateText="Visualizar Feriado" ToolTip="Visualizar Feriado" />
                </ItemTemplate>
              </asp:TemplateField>
              <asp:TemplateField>
                <ItemStyle Width="100px" />
                <ItemTemplate>
                  <asp:ImageButton ID="imgBtExcluir" OnClick="imgBtExcluir_Click" runat="server" CommandArgument='<%#Bind("IDFeriado") %>'
                    CausesValidation="false" ImageUrl="~/App_Imagens/icons/excluir.png" AlternateText="Excluir Feriado"
                    ToolTip="Excluir Feriado" />
                </ItemTemplate>
              </asp:TemplateField>
    

    Aí, eu preciso que ao clicar no ImageButton do Excluir, ele Exclua o Registro da linha do GridView.

     

    Alguém sabe como posso fazer isso?

     

    Att.

     

    Leonardo.


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.
    • Movido AndreAlvesLima sexta-feira, 24 de setembro de 2010 20:21 (De:.NET Development - Geral)
    sexta-feira, 17 de setembro de 2010 14:01

Respostas

  • Estranho, eu testei aqui.

    mas blz, vamos lá:

    O seu html do botão:

    <asp:TemplateField>
                <ItemStyle Width="100px" />
                <ItemTemplate>
                  <asp:ImageButton ID="imgBtExcluir" OnClick="imgBtExcluir_Click" runat="server" CommandName="Excluir" CommandArgument='<%#Bind("IDFeriado") %>'
                    CausesValidation="false" ImageUrl="~/App_Imagens/icons/excluir.png" AlternateText="Excluir Feriado"
                    ToolTip="Excluir Feriado" />
                </ItemTemplate>

    o commandname que vc coloca na tag acima, tem que ser identico ao do seu if, abaixo:

    if (e.CommandName == "Excluir")
      { 

          int32 IDdoFeriado  = (int32)e.CommandArgument; //Aqui vai vir o código do Feriado.

          //aqui vc chama sua função de excluir.
      }

    Obs:Coloca um breakpoint na linha int32 IDdoFeriado ... e veja se quando vc clica no botão excluir chega nesta linha.

    Ficamos no aguardo.

    sexta-feira, 17 de setembro de 2010 19:10

Todas as Respostas

  • Olá Leonardo.

    Para preenher o grid vc está utilizando o sqldatasource?

    Fico no aguardo.

    sexta-feira, 17 de setembro de 2010 14:23
  • Olá Leonardo.

     

    Existem algumas maneiras de se fazer isso:

    Uma abordagem interessante seria colocar um "Field" do tipo "Button" com a imagem que você quer. Na propriedade "CommandName" deste button, você poderia colocar "excluir".

    Depois, no evento RowCommand, você trataria da seguinte forma:

    protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
    {
      if (e.CommandName.CompareTo("excluir") == 0)
      { 
        //Codigo para exclusão e demais tratamentos...
      }
    }
    
    Abraços!

    • Sugerido como Resposta Rudy Seidinger sexta-feira, 17 de setembro de 2010 15:30
    sexta-feira, 17 de setembro de 2010 15:06
  • <
    asp
    :
    ImageButton
     ID
    =
    "imgBtExcluir"
     OnClick
    =
    "imgBtExcluir_Click"
     runat
    =
    "server"
     CommandArgument
    =
    '<%#Bind("IDFeriado") %>'
    
            CausesValidation
    =
    "false"
     ImageUrl
    =
    "~/App_Imagens/icons/excluir.png"
     AlternateText
    =
    "Excluir Feriado"
    
            ToolTip
    =
    "Excluir Feriado" CommandName="Delete" value='<%#Eval("chave_primaria_da_tabela")%>'
     />
    

    Algo parecido com isso. Oo

    XD

    Espero ter ajudado.

    Att, Hugo S. Mendes
    sexta-feira, 17 de setembro de 2010 16:38
  • Boa tarde, Ricardo.

     

    Estou utilizando LINQ to SQL na minha aplicação, sendo dividida em 3 camadas, onde utilizo a minha camada de negócios como datasource para então fazer o DataBind.


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.
    sexta-feira, 17 de setembro de 2010 16:55
  • Olá Hugo.

     

    Então, deixa eu explicar o que acontece...

    Primeiramente, estou tentando fazer do jeito que vc citou, aí, dentro do meu "imgBtExcluir_Click" eu tenho o seguinte:

    protected void imgBtExcluir_Click(object sender, ImageClickEventArgs e)
        {
          excluirRegistro(Id_Registro);
        }

    Aí, quando eu clico no imagebutton da linha do GridView que eu quero excluir, ele não exclui, porque não consegue pegar o ID da linha do Gridview...

    Aí não consigo fazer a exclusão.

     

    Att.

     

    Leonardo.


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.
    sexta-feira, 17 de setembro de 2010 17:00
  • a vc está fazendo com linq né..

     

    tenta pegando o selectedindex do gridview.. acho q deve ficar mais ou menos assim:

     

    int i = GridView1.SelectedValue();

    excluirRegistro(i);


    Att, Hugo S. Mendes
    sexta-feira, 17 de setembro de 2010 17:16
  • Da maneira que tinha citado antes, você pode usar o e.CommandSource para pegar a origem do evento.
    sexta-feira, 17 de setembro de 2010 17:40
  • Hugo, tentei do jeito que vc explicou, mas o parâmetro só retorna null.

    Saberia outra forma que possa resolver esse problema???

    Att.

    Leonardo


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.
    sexta-feira, 17 de setembro de 2010 18:56
  • Boa tarde, Rudy.

     

    Poderia me ajudar a fazer da forma que vc diz, com algum exemplo por favor, pois sinceramente, eu não entendi.

    Obrigado.

    Att,

    Leonardo


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.
    sexta-feira, 17 de setembro de 2010 18:57
  • Leonardo, conforme seu primeiro poste coloque desta maneira o html do botão:

    <asp:ImageButton ID="imgBtExcluir" OnClick="imgBtExcluir_Click" runat="server" CommandName="Excluir" CommandArgument='<%#Bind("IDFeriado") %>'
                    CausesValidation="false" ImageUrl="~/App_Imagens/icons/excluir.png" AlternateText="Excluir Feriado"
                    ToolTip="Excluir Feriado" />
                </ItemTemplate>

    em seguida, vá no seu DataGridView, no evento rowcommand.

    Dentro deste evento, coloque esta linha:

    if (e.CommandName == "Excluir")
      { 

          int32 IDdoFeriado  = (int32)e.CommandArgument; //Aqui vai vir o código do Feriado.

          //aqui vc chama sua função de excluir.
      }

    Abraços.

    sexta-feira, 17 de setembro de 2010 19:02
  • Não Funcionou.... =-(


    "Eu guardei muitas coisas em minhas mãos, e perdi todas; mas todas que coloquei nas mãos de Deus, essas eu ainda possuo." - Martin Luther King, Jr.
    sexta-feira, 17 de setembro de 2010 19:05
  • Estranho, eu testei aqui.

    mas blz, vamos lá:

    O seu html do botão:

    <asp:TemplateField>
                <ItemStyle Width="100px" />
                <ItemTemplate>
                  <asp:ImageButton ID="imgBtExcluir" OnClick="imgBtExcluir_Click" runat="server" CommandName="Excluir" CommandArgument='<%#Bind("IDFeriado") %>'
                    CausesValidation="false" ImageUrl="~/App_Imagens/icons/excluir.png" AlternateText="Excluir Feriado"
                    ToolTip="Excluir Feriado" />
                </ItemTemplate>

    o commandname que vc coloca na tag acima, tem que ser identico ao do seu if, abaixo:

    if (e.CommandName == "Excluir")
      { 

          int32 IDdoFeriado  = (int32)e.CommandArgument; //Aqui vai vir o código do Feriado.

          //aqui vc chama sua função de excluir.
      }

    Obs:Coloca um breakpoint na linha int32 IDdoFeriado ... e veja se quando vc clica no botão excluir chega nesta linha.

    Ficamos no aguardo.

    sexta-feira, 17 de setembro de 2010 19:10
  • é exatamente desta forma que estava me referindo... tem que funcionar!
    domingo, 19 de setembro de 2010 22:35
  • Prezado(a),

    Estou migrando seu post para o fórum de ASP.NET.

    Por favor, das próximas vezes que for postar alguma dúvida referente a esse assunto, poste por lá.

    Obrigado.


    André Alves de Lima
    Visite o meu site: http://andrealveslima.spaces.live.com
    Me siga no Twitter: @andrealveslima
    sexta-feira, 24 de setembro de 2010 20:21