none
Deletar linha no GridView

    Question

  •  

    Alimento meu GridView com um DataTable, gostaria de saber como faço pra deletar uma linha selecionada no GridView...!!!!!

     

    Grato

    Thursday, October 04, 2007 5:31 PM

All replies

  •  

    Olá Davi, tudo bom?

     

    Há duas maneiras de você deletar linhas do Grid.

     

    A primeira delas seria adicionar um CommandField > Delete. Adiciona essa Coluna em seu GridView.

    Clique sobre o GridView e va até o painel de Propriedades. Na propriedade DataKeysName coloque o Id ou qualquer que seja a informação que você precisa para identificar que vai apaga-lo.

    Depois disso, vá até Eventos e dê duplo clique no Evento RowDeleting.

    Ele irá abrir o código para você.

    Então você irá pegar a informação do DataKeysName e irá passar como parametro para excluir essa informação.

    Pegue o DataKeys assim:

     

    ViewState["Codigo"] = GridView1.DataKeys[e.RowIndex].Value;

     

    Então você exclui e manda Listar o Grid novamente.

     

    Essa é uma das maneiras, a mais fácil. ahiusha, se quiser eu explico a outra, que é por CommandArgument.

    Mas até aqui, você entendeu?

    Espero ter ajudado!

    Thursday, October 04, 2007 6:53 PM
  • Olá Davi,

    Você poderia manter a datatable em uma sessão, e sempre que precisar manipular os dados, você manipula a sessão, e quando clicar no botão excluir do grid, como a linha está selecionada, você pode mandar excluir a linha da tabela na mesma posição da linha selecionada. Ex:

     

    'Armazena a sua tabela em uma sessão

    session("Table") = "sua_data_table"

     

    'Atribui a tabela da sessão como fonte de dados do gridview e manda mostrar os dados

    gridview1.datasource = session("Table")

    gridview1.databind()

     

    Quando clicar no botão excluir, você faz o seguinte:

     

    'Declara uma variável de referência do tipo DataTable e recebe o datatable da Session

    dim tbl as DataTable = Session("Table")

     

    'Quando uma linha está selecionada, a propriedade SelectedIndex do grid, armazena o índice da linha selecionada, assim, você manda excluir a linha do datatable com este mesmo código de índice

    tbl.rows.removeAt(gridView1.SelectedIndex)

     

    'Depois de excluir a linha, atualiza o datatable na Sessão

    session("Table") = tbl

     

    'Atribui novamente a sessão como fonte de dados do grid e manda mostrar os dados

    gridview1.datasource = session("Table")

    gridview1.databind()

     

     

     

    Espero ter ajudado.

     

    Atenciosamente.

     


    Everton Rodrigues

    Analista de Sistemas

    Especialista .NET e

    Certificação Digital

    projenet@yahoo.com.br

    Thursday, October 04, 2007 9:27 PM
  •  Everton Rodrigues wrote:

    Olá Davi,

    Você poderia manter a datatable em uma sessão, e sempre que precisar manipular os dados, você manipula a sessão, e quando clicar no botão excluir do grid, como a linha está selecionada, você pode mandar excluir a linha da tabela na mesma posição da linha selecionada. Ex:

     

    'Armazena a sua tabela em uma sessão

    session("Table") = "sua_data_table"

     

    'Atribui a tabela da sessão como fonte de dados do gridview e manda mostrar os dados

    gridview1.datasource = session("Table")

    gridview1.databind()

     

    Quando clicar no botão excluir, você faz o seguinte:

     

    'Declara uma variável de referência do tipo DataTable e recebe o datatable da Session

    dim tbl as DataTable = Session("Table")

     

    'Quando uma linha está selecionada, a propriedade SelectedIndex do grid, armazena o índice da linha selecionada, assim, você manda excluir a linha do datatable com este mesmo código de índice

    tbl.rows.removeAt(gridView1.SelectedIndex)

     

    'Depois de excluir a linha, atualiza o datatable na Sessão

    session("Table") = tbl

     

    'Atribui novamente a sessão como fonte de dados do grid e manda mostrar os dados

    gridview1.datasource = session("Table")

    gridview1.databind()

     

     

     

    Espero ter ajudado.

     

    Atenciosamente.

     


    Everton Rodrigues

    Analista de Sistemas

    Especialista .NET e

    Certificação Digital

    projenet@yahoo.com.br

     

    Obrigado pela ajuda Everton e Monielle..

     

    estou fazendo assim:

     

    protected void gdwGraph_RowDeleting(object sender, GridViewDeleteEventArgs e)

    {

    try

    {

    DataTable tbl = (DataTable)Session["dtGraphLinesSession"];

    tbl.Rows.RemoveAt(gdwGraph.SelectedIndex);

    Session["dtGraphLinesSession"] = tbl;

    gdwGraph.DataSource = (DataTable)Session["dtGraphLinesSession"];

    gdwGraph.DataBind();

    }

    catch (Exception exc)

    {

    AuxAppVS2005.ErrorLog log = new AuxAppVS2005.ErrorLog(exc, 1);

    }

    }

     

    e me retorna esse erro

     

    Não há linha na posição -1.

    Friday, October 05, 2007 5:13 PM
  •  Davi Luis wrote:

     

    Alimento meu GridView com um DataTable, gostaria de saber como faço pra deletar uma linha selecionada no GridView...!!!!!

     

    Grato

     

     

    ....

    Monday, October 08, 2007 5:25 PM
  • Davi, bom dia.

    Este erro está ocorrendo, justamente porque você não tem uma linha selecionada, pois quando você efetua a seleção da linha, é disparado os eventos RowSelecting e RowSelected, fazendo com que o índice da linha seja armazenado na propriedade SelectedIndex.

     

    Faça assim, ao invés de você usar a propriedade do grid:

    tbl.Rows.RemoveAt(gdwGraph.SelectedIndex);

     

    utilize o RowIndex que vem como parêmetro do método RowDeleting:

    tbl.Rows.RemoveAt(e.RowIndex);

     

     

    Espero ter ajudado.

     

    Atenciosamente.

     


    Everton Rodrigues

    Analista de Sistemas

    Especialista .NET e

    Certificação Digital

    projenet@yahoo.com.br

     

     

    • Proposed as answer by godinis22 Thursday, September 15, 2011 9:23 PM
    Thursday, October 18, 2007 2:19 PM
  • amigo qual é o parâmetro para excluir ?
    Sunday, August 25, 2013 12:29 AM