datagridview - Selecionar linha
04/05/2010
0
Sávio Costa
Posts
05/05/2010
Marcio Silveira
05/05/2010
Sávio Costa
Tenho que habilitar algo ? Obrigado
06/05/2010
Marcio Silveira
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.
06/05/2010
Netasper
Clique aqui para fazer login e interagir na Comunidade :)