Array
(
)

datagridview - Selecionar linha

Sávio Costa
   - 04 mai 2010

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

Marcio
   - 05 mai 2010

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

0
|
0

Sávio Costa
   - 05 mai 2010

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

0
|
0

Marcio
   - 06 mai 2010

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:
#Código


        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:
#Código
        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.

0
|
0

Netasper
   - 06 mai 2010

private void dgvDados_CellClick(object sender, DataGridViewCellEventArgs e)

{

linhaAtual = int.Parse(e.RowIndex.ToString());

if (linhaAtual >= 0)

obtemDadosGrid();

}

[]s

0
|
0