none
Dados GridView no textBox RRS feed

  • Pergunta

  • Sempre trabalhei com programação c# desktop, e agora estou tentando aprender um pouco de asp.net. 

    Ao carregar o grid do banco de dados, como posso popular os textbox, quando selecionar uma linha no grid?

    Para faze isso em Desktop eu usava o cellEnter do datagridview, mas em asp, não tem 

    Meu Código

      
      public class Classes
        {
    
            public int id { get; set; }
            public String Nome { get; set; }
            public String Idade { get; set; }
    
        }
    
    
     public class Conecta
        {
    
            //cria a conexão com o banco de dados
            //Não esquecer de colocar public na frente do OleDbConnection
            public OleDbConnection cn = new OleDbConnection();
            public string status = "";
    
    
    
    
            //Abrir conexão
            public void conectar()
            {
                try
                {
    
                    string provedor = "Provider=Microsoft.ACE.OLEDB.12.0";
                   // string banco = @"Data Source=C:\Users\Engenharia\Desktop\Banco.accdb";
                    string banco = @"Data Source=C:\Users\Gelson\Desktop\Banco.accdb";
    
    
                    cn.ConnectionString = provedor + ";" + banco;
    
                    cn.Open();
                    status = "Conexão aberta";
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
    
    
            //Fechar conexão
            public void desconectar()
            {
                cn.Close();
                status = "Conexão fechada";
            }
    
    
        }
    
    
    
    
    
    
    //Listar Dados no DataGridView
            public IList<Classes> Listar()
            {
    
                IList<Classes> lista = new List<Classes>();
                string query = "";
    
    
                c.conectar();
    
    
                query += " SELECT id,nome,idade FROM ";
                query += " teste ORDER BY id";
    
    
                OleDbCommand cd = new OleDbCommand();
                cd.Connection = c.cn;
                cd.CommandText = query;
                OleDbDataReader dr = cd.ExecuteReader();
    
                try
                {
    
    
                    while (dr.Read())
                    {
    
                        string strId = dr["id"].ToString();
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classes obj = new Classes();
    
                        obj.id = Convert.ToInt32(strId);
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
    
                    }
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (c.cn.State == ConnectionState.Open)
                        c.desconectar();
                }
    
                return lista;
            }//fim
    
    


    quarta-feira, 15 de abril de 2015 21:57

Respostas

  • Uma das soluções que pode resolver seu problema é ativar a propriedade no seu grid AutoGenerateSelectButton deixar true, e no evento SelectedIndexChanged você captura a linha selecionada e assim preenche os seus TextBox.

    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    quarta-feira, 15 de abril de 2015 23:57

Todas as Respostas

  • Uma das soluções que pode resolver seu problema é ativar a propriedade no seu grid AutoGenerateSelectButton deixar true, e no evento SelectedIndexChanged você captura a linha selecionada e assim preenche os seus TextBox.

    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    quarta-feira, 15 de abril de 2015 23:57
  • Sempre trabalhei com programação c# desktop, e agora estou tentando aprender um pouco de asp.net. 

    Ao carregar o grid do banco de dados, como posso popular os textbox, quando selecionar uma linha no grid?

    Para faze isso em Desktop eu usava o cellEnter do datagridview, mas em asp, não tem 

    Meu Código

      
      public class Classes
        {
    
            public int id { get; set; }
            public String Nome { get; set; }
            public String Idade { get; set; }
    
        }
    
    
     public class Conecta
        {
    
            //cria a conexão com o banco de dados
            //Não esquecer de colocar public na frente do OleDbConnection
            public OleDbConnection cn = new OleDbConnection();
            public string status = "";
    
    
    
    
            //Abrir conexão
            public void conectar()
            {
                try
                {
    
                    string provedor = "Provider=Microsoft.ACE.OLEDB.12.0";
                   // string banco = @"Data Source=C:\Users\Engenharia\Desktop\Banco.accdb";
                    string banco = @"Data Source=C:\Users\Gelson\Desktop\Banco.accdb";
    
    
                    cn.ConnectionString = provedor + ";" + banco;
    
                    cn.Open();
                    status = "Conexão aberta";
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
    
    
    
            //Fechar conexão
            public void desconectar()
            {
                cn.Close();
                status = "Conexão fechada";
            }
    
    
        }
    
    
    
    
    
    
    //Listar Dados no DataGridView
            public IList<Classes> Listar()
            {
    
                IList<Classes> lista = new List<Classes>();
                string query = "";
    
    
                c.conectar();
    
    
                query += " SELECT id,nome,idade FROM ";
                query += " teste ORDER BY id";
    
    
                OleDbCommand cd = new OleDbCommand();
                cd.Connection = c.cn;
                cd.CommandText = query;
                OleDbDataReader dr = cd.ExecuteReader();
    
                try
                {
    
    
                    while (dr.Read())
                    {
    
                        string strId = dr["id"].ToString();
                        string strNome = dr["nome"].ToString();
                        string strIdade = dr["idade"].ToString();
    
                        Classes obj = new Classes();
    
                        obj.id = Convert.ToInt32(strId);
                        obj.Nome = strNome;
                        obj.Idade = strIdade;
    
                        lista.Add(obj);
    
                    }
    
                }
                catch (Exception ex)
                {
                    throw ex;
                }
                finally
                {
                    if (c.cn.State == ConnectionState.Open)
                        c.desconectar();
                }
    
                return lista;
            }//fim
    


    Se quiser fazer isso de maneira mais dinâmica sugiro que use ajax ou angularjs+ajax.
    quinta-feira, 16 de abril de 2015 12:10
  • Bertoncini, Alexsandro obrigado

    Funcionou, mas é pouco eficaz pra mim, pois tem que clicar em selecionar e toda hora que clicar em selecionar tem que recarregar a pagina. Teria que ser algo como "selecionar com o mouse e aparecer nos textbox, aperto a tecla para baixo, muda a linha do grid e também muda os valores dos textboxs".

    Fiz da seguinte forma o código

      protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
            {
    
                GridViewRow row = GridView1.SelectedRow;
                txtID.Text = row.Cells[1].Text;
                txtNome.Text = row.Cells[2].Text;
                txtIdade.Text = row.Cells[3].Text;
              
            }


    quinta-feira, 16 de abril de 2015 15:08
  • Raniel Nogueira, vc poderia dar um exemplo simples?
    quinta-feira, 16 de abril de 2015 15:09
  • Sim Realmente é uma forma de resolver o problema de maneira simples.

    E como nosso amigo Raniel mencionou, pode ser feito com JQuery, ou angularjs+ajax.

    Faz algum tempo que não trabalho com web, então não sei se vou conseguir ajudar tanto.

    Com o Ajax já vi selecionar com o click e preencher os text box não é complicado de fazer tal fato, porém click e depois com as setas passar pelos valores não se se é possivel.

    Encontrei esse link com jQuery no evento RowSelected ao mudar a cor você pode fazer ele preencher seus TextBox juntos.

    Outro link que encontrei utilizando o GridView com JQuery


    Uma imagem vale mais do que mil palavras, mas ocupa 3 mil vezes mais espaço em disco

    quinta-feira, 16 de abril de 2015 16:43