datagridview - Selecionar linha

04/05/2010

0

Pessoal, criei um datagridview onde que populo dinamicamente. Gostaria que a cada seleção de linha no datagridview me altera-se as informções nos textBox. O método para atualizar eu já criei, somente nao consegui implementar para que a cada selecão da linha chama-se o método que criei para atualizar.   Alguém já implentou algo?   OBs. Estou utilizando o Forms
Sávio Costa

Sávio Costa

Responder

Posts

05/05/2010

Marcio Silveira

Este seu método tem que ser chamado no SelectedIndexChanged (clique duas vezes sobre o GridView que ele será criado para você automaticamente).

Responder

05/05/2010

Sávio Costa

Nao consegui fazer habilitar este campo... Dou dois cliques e sempre me retorna no evento _CellContentClick
Tenho que habilitar algo ?   Obrigado
Responder

06/05/2010

Marcio Silveira

Sávio,

Foi mal, depois que vi que era Windows Form.
É o seguinte, clica no grid e vá na aba propriedades / depois clica em Events, selecione o evento: SelectionChanged.
Dentro do evento, você deve fazer algo do tipo:

        private void grdStatus_SelectionChanged(object sender, EventArgs e)
        {
            if (grdStatus.SelectedRows.Count > 0)
            {
                DataRowView dr = (DataRowView)grdStatus.Rows[grdStatus.SelectedRows[0].Index].DataBoundItem;
                txtTBSCOD.Text = dr["TBSCOD"].ToString();
                txtTBSDES.Text = dr["TBSDES"].ToString();
                btnExcluir.Enabled = true;
            }
        }



Note que mesmo que esteja marcado mais de uma Row, somente a primeira será selecionada (pois estou passando SelectedRows[0]).
Mas você vai perceber também que se o usuário selecionar um cell ao invés de selecionar o Linha, o sistema não vai fazer ação nenhuma.

Por isso vou te passar outra alternativa o Evento: MouseClick.
O código seria nesse sentido:
        private void grdTBPAR_MouseClick(object sender, MouseEventArgs e)
        {

            int indiceselecionado = -1;
            // Se o usuário selecionou a Linha
            if (grdTBPAR.SelectedRows.Count > 0)
            {
                indiceselecionado = grdTBPAR.SelectedRows[0].Index;
            }
            else
            { // Se o usuário selecionou a célula
                if (grdTBPAR.SelectedCells.Count > 0)
                {
                    indiceselecionado = grdTBPAR.SelectedCells[0].RowIndex;
                }
            }

            if (indiceselecionado != -1)
            {
                DataRowView dr = 
(DataRowView)grdStatus.Rows[indiceselecionado].DataBoundItem;

                txtTBSCOD.Text = dr["TBSCOD"].ToString();

                txtTBSDES.Text = dr["TBSDES"].ToString();

                btnExcluir.Enabled = true;

            }
        }

 
Você também pode usar este último código ao invés do "MouseClick" o: MouseDoubleClick, assim o usuário terá que clicar duas vezes sobre o registro para selecioná-lo, mas isso dependerá do padrão que você adotar em seu projeto.
Responder

06/05/2010

Netasper

private void dgvDados_CellClick(object sender, DataGridViewCellEventArgs e) { linhaAtual = int.Parse(e.RowIndex.ToString()); if (linhaAtual >= 0) obtemDadosGrid(); } []s
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar