• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

flyzone

Copiar uma Row de uma gridview para outra gridview (Resolvido !! :) )

9 mensagens neste tópico

Boas!!

Estou com um problema que não deve ser muito difícil de resolver, pelo menos para quem domine o assunto.

Tenho uma gridview  que lista todos os "Funcionários"  e gostaria de ao seleccionar uma linha(row) copia-la para outra gridview de modo mais tarde recolher todos os id´s dos funcionários da segunda gridview.

Se houver outro método de fazer isto digam..

Qualquer ajuda será bem vinda.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

usas o evento SelectedIndexChanged

Occurs when a row's Select button is clicked, but after the GridView control handles the select operation. This event is often used to perform a task after a row is selected in the control.

GridViewRow row = CustomersGridView.Rows[e.NewSelectedIndex];

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

usas o evento SelectedIndexChanged

Occurs when a row's Select button is clicked, but after the GridView control handles the select operation. This event is often used to perform a task after a row is selected in the control.

Obrigado pela rápida resposta.  ;)

Sim é isso que estava a pensar fazer. Quando "SelectedIndexChanged" iria copiar a" row " da tabela original para a secundaria, mas não sei como fazer esse "Copiar " ;) " Pegar " na row  seleccionada sei mas como inseri-la (copiar ) na gridview secundaria !!?

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que esse add não é muito simples, sugiro outra abordagem

guardar num contentor (e em ViewState) os dados que queres que apareçam na gridview2

no evento de selectedIndexChanged adicionas + esses dados á lista

e no load da pagina fazes um databind da gridview2 com essa lista tipo

        GridView2.DataSource = ContentorComOsDados;

        GridView2.DataBind();

assim à primeira vista já deve "resolver" o teu problema, talvez daqui a bocado já surja uma ideia melhor  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

acho que esse add não é muito simples, sugiro outra abordagem

guardar num contentor (e em ViewState) os dados que queres que apareçam na gridview2

no evento de selectedIndexChanged adicionas + esses dados á lista

e no load da pagina fazes um databind da gridview2 com essa lista tipo

        GridView2.DataSource = ContentorComOsDados;

        GridView2.DataBind();

assim à primeira vista já deve "resolver" o teu problema, talvez daqui a bocado já surja uma ideia melhor  ;)

Pois era algo desse género que queria fazer, pelo menos resolve o problema.

Vou pesquisar e tentar fazer  isso.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

não te esqueças que o contentor de dados tem que ser guardado entre postbacks, normalmente em ViewState, senão "perdes" os dados a cada select

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já consegui fazer qualquer coisa.

Fiz algo do género. No Page_Load criei uma tabela com os campos necessários e associei ao DataSource da gridview2 essa tabela. E sempre que selecciono uma row da gridview1 crio uma nova row na tabela  e insiro la os dados,  deste modo a row selecionada "aparece" na gridview 2.  Mas sempre que selecciono  uma nova row da gridview1 os dados q estavam na tabela/ (gridview2) seleccionados anteriormente  desaparecem e apenas ficam os dados novos.

Dá-me a sensação que sempre que selecciono uma nova row estou a criar a tabela (source da gridview2 ) novamente.... :s ou algo do género ;)

protected void Page_Load(object sender, EventArgs e)

    {       

            dataTable = new DataTable();

            Session["dataTable"] = dataTable;

            dataTable.Columns.Add("ID");

            dataTable.Columns.Add("Nome");

            dataTable.Columns.Add("Moarada");

            dataTable.Columns.Add("Telefone");

              GridView1.DataSource = dataTable;

            GridView1.DataBind(); 

       

    }

public void Insere_Novo_Func()

    {           

        DataRow row = dataTable.NewRow();

        row[0] = ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex, "Id_Func").ToString();

        row[1] = ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex, "Nome_Func").ToString();

        row[2] = ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex, "Morada_Func").ToString();

        row[3] = ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex, "Telefone_Func").ToString();

        row[4] = ASPxGridView1.GetRowValues(ASPxGridView1.FocusedRowIndex, "Id_Equipa").ToString();

        dataTable.Rows.Add(row);

        GridView1.DataBind();

}

Foi mais ou menos isto que fiz..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, no load tens que fazer diferente:

//verificar se já existe em SessionState a tabela

if(Session["dataTable"] !=null)

  dataTable =  Session["dataTable"] ;

else

  //se não existir, cria-se (acontece no 1º select)

  dataTable = new DataTable();

não sei de cor se a consulta ao Session[] lança excepção caso a key não exista mas vez logo  ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, no load tens que fazer diferente:

//verificar se já existe em SessionState a tabela

if(Session["dataTable"] !=null)

  dataTable =  Session["dataTable"] ;

else

  //se não existir, cria-se (acontece no 1º select)

  dataTable = new DataTable();

não sei de cor se a consulta ao Session[] lança excepção caso a key não exista mas vez logo  ;)

Olha espectacular funcionou as mil maravilhas..

if (Session["TdataTable"] != null)

            dataTable = Session["TdataTable"] as DataTable;

        else

        //se não existir, cria-se (acontece no 1º select)

        {

            dataTable = new DataTable();

            Session["TdataTable"] = dataTable;

}

Obrigado pela ajuda ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora