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