Usuário com melhor resposta
Ao selecionar um registro no DataGrid atualizar outro DataGrid, como fazer isso?

Pergunta
-
É o seguinte pessoal, tenho um grid com os registros
gridUsuario
COD | NOME | EMAIL
1 | Tiago | tiago@hotmail.com
2 | Roberto | roberto@hotmail.com
e outro grid assim:
gridTelefones
CODUSUARIO | TELEFONE
1 | 2584-5486
1 | 4587-8965
2 | 4578-8755
Gostaria que acontecesse o seguinte: quando eu clicasse no primeiro grid no registro de codigo 1, aparecesse apenas os telefones do mesmo.
Detalhe que isso está sendo feito com DataSet Tipado, com registros genéricos, sem utilização de banco de dados ainda.
Titicolas GamerTag: Thiticolax 360 Portifólio: http://titicolas.deviantart.com MSN: titicolas@hotmail.com
Respostas
-
Bom dia!
Ja fiz alguma coisa parecida... eu faria da seguinte forma:
Para pegar o valor do registro selecionado no grid1 :
string codigoUser = seuDataGrid1[1, seuDataGrid1.CurrentRow.Index].Value.ToString();
Para mostrar dinâmicamente o grid2 filtrando por código de usuário :
Você deve criar um evento no grid1, o nome do evento é SelecionChanged, como no código abaixo:
private void filtraCodUsuario(object sender, EventArgs e)
Claro que você deve adaptar para seu projeto afinal não sei o contexto final, mais assim você vai conseguir...
{
ds.Tables["suaTabela"].DefaultView.RowFilter = "codusuario Like'%" + codigoUser + "%'";
}
Espero ter ajudado,
Abraço- Marcado como Resposta Titicolas segunda-feira, 13 de abril de 2009 12:21
-
Olá
Voce disse DataSet Tipado , com registros "genericos". Nao entendi muito bem o que quis dizer mas vamos la:
Voce pode fazer da seguinte forma (caso haja um relacionamento entre as duas tabelas):
// obtenha o codigo do registro pai int chave = (int)grid.SelectedRows[0].Cells["MeuCampoNoDataTable"].Value; // obtenha essa linha como um objeto DataRow DataRow[] linha = meuDataSet.Tables["MinhaTabela"].Select("MeuCampo=" + chave); // AGORA O QUE REALMENTE IMPORTA: // acesse os registros filhos usando o metodo GetChildRows passando o nome do relacionamento ou o objeto DataRelation DataRow[] registrosFilhos = linha[0].GetChildRows("NomedoRelacionamento");
Assim voce tera um array DataRow com todas as registros-filho.
Dê um feedback.
[]s- Marcado como Resposta Titicolas segunda-feira, 13 de abril de 2009 12:21
Todas as Respostas
-
Bom dia!
Ja fiz alguma coisa parecida... eu faria da seguinte forma:
Para pegar o valor do registro selecionado no grid1 :
string codigoUser = seuDataGrid1[1, seuDataGrid1.CurrentRow.Index].Value.ToString();
Para mostrar dinâmicamente o grid2 filtrando por código de usuário :
Você deve criar um evento no grid1, o nome do evento é SelecionChanged, como no código abaixo:
private void filtraCodUsuario(object sender, EventArgs e)
Claro que você deve adaptar para seu projeto afinal não sei o contexto final, mais assim você vai conseguir...
{
ds.Tables["suaTabela"].DefaultView.RowFilter = "codusuario Like'%" + codigoUser + "%'";
}
Espero ter ajudado,
Abraço- Marcado como Resposta Titicolas segunda-feira, 13 de abril de 2009 12:21
-
Olá
Voce disse DataSet Tipado , com registros "genericos". Nao entendi muito bem o que quis dizer mas vamos la:
Voce pode fazer da seguinte forma (caso haja um relacionamento entre as duas tabelas):
// obtenha o codigo do registro pai int chave = (int)grid.SelectedRows[0].Cells["MeuCampoNoDataTable"].Value; // obtenha essa linha como um objeto DataRow DataRow[] linha = meuDataSet.Tables["MinhaTabela"].Select("MeuCampo=" + chave); // AGORA O QUE REALMENTE IMPORTA: // acesse os registros filhos usando o metodo GetChildRows passando o nome do relacionamento ou o objeto DataRelation DataRow[] registrosFilhos = linha[0].GetChildRows("NomedoRelacionamento");
Assim voce tera um array DataRow com todas as registros-filho.
Dê um feedback.
[]s- Marcado como Resposta Titicolas segunda-feira, 13 de abril de 2009 12:21
-