datagridview - Selecionar linha
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
Curtidas 0
Respostas
Marcio Silveira
04/05/2010
Este seu método tem que ser chamado no SelectedIndexChanged (clique duas vezes sobre o GridView que ele será criado para você automaticamente).
GOSTEI 0
Sávio Costa
04/05/2010
Nao consegui fazer habilitar este campo... Dou dois cliques e sempre me retorna no evento _CellContentClick
Tenho que habilitar algo ? Obrigado
Tenho que habilitar algo ? Obrigado
GOSTEI 0
Marcio Silveira
04/05/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:
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:
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.
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
Netasper
04/05/2010
private void dgvDados_CellClick(object sender, DataGridViewCellEventArgs e)
{
linhaAtual = int.Parse(e.RowIndex.ToString());
if (linhaAtual >= 0)
obtemDadosGrid();
}
[]s
GOSTEI 0