DataGridView travando.

07/08/2015

Boa noite! Estou usando VS Express 2013 for Windows Desktop. A linguagem de programação é C#.
Estou elaborando um projeto para o meu TCC. Já fiz várias pesquisas, algumas deram certo, outras não. E é em razão disso que busco ajuda. Veja a imagem:
[img:descricao=DataGridView dando erro ao iniciar o projeto.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150807-182624.jpg[/img]

Eu clico em OK, o erro sai. Mas quando clico em uma da linhas do grid aparece esse erro como mostra a imagem:
[img:descricao=Erro ao clicar na linha do grid.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150807-182852.jpg[/img]

Eu que eu quero é que esse desapareça, e quando clicar em uma das linhas do grid, todos os campos, inclusive o da imagem, sejam preenchidos.

Aqui estão os códigos do dataGridView:
[img:descricao=Códigos do dataGridView em C#, para preenchimento dos campos do form.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150807-183715.jpg[/img]

Fabiano Silva

Melhor resposta

07/08/2015

Não sei se entendi direito, mas você quer que ao clicar no data grid a linha em que ele clicou preencha os campos certo?
Tente utilizar:

datagridview.CurrentRow.Cells[index].Value.ToString()

Harada

Responder Citar

Outras Respostas

07/08/2015

Harada

Não sei se entendi direito, mas você quer que ao clicar no data grid a linha em que ele clicou preencha os campos certo?
Tente utilizar:

datagridview.CurrentRow.Cells[index].Value.ToString()
Responder Citar

08/08/2015

Fabiano Silva

Obrigado por responder. Vou testar, para ver se dá certo.
Responder Citar

08/08/2015

Fabiano Silva

Só uma pergunta. Essa linha de código, eu posso colocar e comentar as demais?
Responder Citar

09/08/2015

Harada

Pode substituir as que você estava utilizando por essa.
Responder Citar

09/08/2015

Fabiano Silva

Vou fazer isso. Me diz uma coisa, se a versão for ultimate aparece esse erro? Estou baixando essa versão. Sacrificado! Estou aqui desde as 9 da manhã.
Responder Citar

09/08/2015

Fabiano Silva

Fiz o que vc me orientou. Mas os resultados foram os mesmos. Sem sucesso. Veja as imagens:
[img:descricao=Quando é clicado no linha acima do código nº 7.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150809-182238.jpg[/img]

Essa imagem é dos códigos. Aqueles códigos com datagridview...[index]... dá erro no index.
[img:descricao=Códigos do grid.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150809-182539.jpg[/img]

Estou no aguardo de sua resposta.
Responder Citar

10/08/2015

Harada

Então cara esse erro que está acontecendo agora está se referindo a conexão com o SQL, você precisa criar uma conexão usando a classe "SqlConnection", abrir ela e executar o comando sql que você colocou na variável "cmm" antes de dar um "da.Fill(ds,"tbVoce")" você executa o comando para ele realizar a pesquisa com o SQL.

Como esse exemplo aqui do tutorial de acesso ao banco de dados(http://www.devmedia.com.br/acesso-a-banco-de-dados-em-c-nivel-basico-parte-1/21695#ixzz3iNTsrelw):
private void button1_Click(object sender, EventArgs e)        
{
/*A variável strcon é o connection string que copiamos anteriormente enquanto criávamos o banco de dados, essa variável poderia ser utilizada para todos os botões do programa, mas irei repeti-la várias vezes para fixar a idéia dos passos que precisamos seguir para fazer a conexão com o banco, Obs.: note que o caminho do seu banco precisa estar com “\\” se não estiver coloque */
string strcon = "Data Source=.\\SQLEXPRESS;AttachDbFilename=C:\\Documents and Settings\\k\\Meus documentos\\banco_dados.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";
SqlConnection conexao = new SqlConnection(strcon); /* conexao irá conectar o C# ao banco de dados */
SqlCommand cmd = new SqlCommand("SELECT * FROM tabela", conexao); /*cmd possui mais de um parâmetro, neste caso coloquei o comando SQL "SELECT * FROM tabela" que irá selecionar tudo(*) de tabela, o segundo parâmetro indica onde o banco está conectado,ou seja se estamos selecionando informações do banco precisamos dizer onde ele está localizado */
            Try //Tenta executar o que estiver abaixo
            {                                                                                                                  
                conexao.Open(); // abre a conexão com o banco   
                cmd.ExecuteNonQuery(); // executa cmd
/*Pronto após o cmd.ExecuteNonQuery(); selecionamos tudo o que tinha dentro do banco, agora os passos seguintes irão exibir as informações para que o usuário possa vê-las    */                                                   SqlDataAdapter da = new SqlDataAdapter(); /* da, adapta o banco de dados ao nosso projeto */
                DataSet ds = new DataSet();
                da.SelectCommand = cmd; // adapta cmd ao projeto
                da.Fill(ds); // preenche todas as informações dentro do DataSet                                          
                dataGridView1.DataSource = ds; //Datagridview recebe ds já preenchido
                dataGridView1.DataMember = ds.Tables[0].TableName;  /*Agora Datagridview exibe o banco de dados*/               
            }
            catch (Exception ex)
            {                 
                MessageBox.Show("Erro "+ex.Message); /*Se ocorer algum erro será informado em um msgbox*/
                throw;      
            }
 
            finally
            {         
               conexao.Close(); /* Se tudo ocorrer bem fecha a conexão com o banco da dados, sempre é bom fechar a conexão após executar até o final o que nos interessa, isso pode evitar problemas futuros */
            }
}
Responder Citar

10/08/2015

Fabiano Silva

Olá, bom dia!

Olha! Aqueles códigos não deram certo. Resolvi recomeçar. Olha esse erro.
[img:descricao=Tentando fazer um Insert.]http://arquivo.devmedia.com.br/forum/imagem/446588-20150810-110004.jpg[/img]

Aqui estão os códigos:
public partial class frmVoce : Form
    {
        
        SqlConnection conn = new SqlConnection(@"Data Source=fabiano-pc\sqlexpress;Initial Catalog=UserLogin;Integrated Security=True");
        SqlDataAdapter da = new SqlDataAdapter();
        DataTable dt = new DataTable();

        int i = 0;
        string imgLoc = "";

        public frmVoce()
        {
            InitializeComponent();
        }

        private void Voce_Load(object sender, EventArgs e)
        {
            // TODO: This line of code loads data into the 'userLoginDataSet1.tbVoce' table. You can move, or remove it, as needed.
            this.tbVoceTableAdapter.Fill(this.userLoginDataSet1.tbVoce);

            SqlConnection conn = new SqlConnection(@"Data Source=fabiano-pc\sqlexpress;Initial Catalog=UserLogin;Integrated Security=True");
            //conn.ConnectionString = Properties.Settings.Default.UserLoginConnectionString1;

            try
            {
                conn.Open();
                MessageBox.Show("Conexão realizada com sucesso!", "Realizando uma conexão...", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            catch (Exception ex)
            {
                MessageBox.Show(String.Format("Fala ao realizar a conexão! Tente Novamente. : ", ex.Message));
            }

            habilita_campos();
            dgvVoce.RowTemplate.Height = 180;
            showdata();
        }

 //===============Salvando dados=============================
        private void picSalvar_Click(object sender, EventArgs e)
        {
            conn.Open();
            SqlCommand cmm = new SqlCommand("INSERT INTO tbVoce(CodVoce, DtNascimento, IdadeVoce, NomeVoce, DtAtual, FotoVoce, EnderecoVoce, TelFixo, Operadora, TelCel, Texto)VALUES('" + txtCodigo.Text + "','" + dtpNascimento.Text + "','" + txtIdade.Text + "','" + txtNome.Text + "','" + dtpHoje.Text + "', @FotoVoce,'" + txtEndereco.Text + "','" + mskTelefone.Text + "','" + cbCelular.Text + "', '" + mskCelular.Text + "')", conn);
            MemoryStream stream = new MemoryStream();
            picFoto.Image.Save(stream, System.Drawing.Imaging.ImageFormat.Jpeg);
            byte[] pic = stream.ToArray();
            cmm.Parameters.AddWithValue("@FotoVoce", pic);

            i = cmm.ExecuteNonQuery();
            if (i > 0)
            {
                MessageBox.Show("Dados salvos com sucesso!" + i + "Row");
            }
            conn.Close();
        }


Estes códigos são baseados no vídeo: https://www.youtube.com/watch?v=VVQ2KFjrW6c
Não tem som, mas dá para entender direitinho.
Responder Citar