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

gadNY

Datagridview c#

15 mensagens neste tópico

eu tenho uma datagridview a obter registos de uma base de dados, mas a datagrid tem varias rows cada uma equivale a um resgisto, ou seja, eu queria que apenas permitisse seleccionar uma row, mas nao estou a ver qual e a propriedade :x

alguem ajuda ?

:confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê a propriedade SelectionMode e define como FullRowSelect

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vê a propriedade SelectionMode e define como FullRowSelect

Acho que e mesmo isso, mas da para seleccionar duas ou mais na mesma, mas apenas uma fica com a seta atras, ele vai detectar apenas essa nao e ? :/

e a propriedade para ir buscar a linha seleccionada e a mesma ou sera a selectedrows  ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que precisas é de colocar a propriedade MultiSelect a false.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que precisas é de colocar a propriedade MultiSelect a false.

ja esta direito, obrigado :P

era mesmo isso, agora so preciso da propriedade para ir buscar a row que esta seleccionada :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Consegues seleccionar mais que uma linha?

Acabei de testar aqui e funcionou bem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Consegues seleccionar mais que uma linha?

Acabei de testar aqui e funcionou bem.

Nao, ja esta certo, obrigado : D

agora falta obter os dados dessa linha :X

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
DataGridView dgv;
//...
string firstCellValue = dgv.SelectedRows[0].Cells[0].Value.ToString();

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

DataGridView dgv;
//...
string firstCellValue = dgv.SelectedRows[0].Cells[0].Value.ToString();

MessageBox.Show(datagridpesq.Rows[0].Cells[0].Value.ToString());

com isto ele mostra o valor que esta na 1 row e 1 cell, mas eu preciso e que faca isso para todas as existentes, para isso e preciso um count as rows e cells certo ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Certo.

Terás de fazer um for para correres todas as linhas. As colunas à partida saberás quantas são portanto para cada coisa que queres acedes ao índice correspondente da coluna.

Exemplo:

for(int i=0; i<dgv.SelectedRows.Count;i++)
{
     string a = dgv.SelectedRows[i].Cells[0].Value.ToString();
     string b = dgv.SelectedRows[i].Cells[2].Value.ToString();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

int Colunas = dr6.FieldCount;
                for (int i = 0; i < Colunas; i++)
                {
                    MessageBox.Show(datagridpesq.Rows[datagridpesq.SelectedRows[0].Index].Cells[i].Value.ToString());
                    conn.Close();
                }

eu ja consegui isso com isto, o meu problema agora e enviar os dados para as texts e combos que estao noutro form, ja esta a ir para o outro form com os objectos enabled, so falta mesmo preencher :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estás a conseguir passar os dados de um form para ou outro, é isso?

Podes passar os dados no construtor do formulário.

Tipo isto:

Form2 frm2 = new Form2(a,b,c) em que a,b e c são os valores que foste buscar à tua tabela

No outro form no construtor ficas com isto

public Form2(string a, string b, string c)
{
this.a = a;
this.b = b;
this.c = c;
}

No método Load do formulário fazes algo como:

txtA.Text = a;
txtB.Text = b;
txtC.Text = c;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, eu tenho isto para inserir os dados na grid, a messagebox e so para ver se esta a funcionar bem, e vai para o outro form e mete os objectos enabled, falta preencher os dados :x

 SqlConnection conn = new SqlConnection(connectionString);
                conn.Open();
                SqlCommand cmd = new SqlCommand("SELECT nome,idade,telefone,morada FROM alunos WHERE nome like @nome", conn);
                cmd.Parameters.Add("@nome", SqlDbType.NVarChar).Value = datagridpesq.SelectedRows.ToString();
                SqlDataReader dr6 = cmd.ExecuteReader();
                int Colunas = dr6.FieldCount;
                for (int i = 0; i < Colunas; i++)
                {
                    MessageBox.Show(datagridpesq.Rows[datagridpesq.SelectedRows[0].Index].Cells[i].Value.ToString());
                    conn.Close();
                }
                this.Hide();
                Alunos alunos = new Alunos();
                alunos.Show();
                alunos.txt_idade.Enabled = true;
                alunos.txt_morada.Enabled = true;
                alunos.txt_nome.Enabled = true;
                alunos.txt_telefone.Enabled = true;

e queria passar estes valores para as respectivas texts do outro form :/

nao estou mesmo a perceber a lógica :x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Fazes como o amilo te disse. Mandas pelo construtor. Em vez de ser Form2 irá ser Alunos

Já agora estás a fazer multiplos Closes à conecção.

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