Usuário com melhor resposta
Pegando informações do DataGrid

Pergunta
-
Estou tentando jogar as informações do meu DataGrid para textbox, porem esse erro aparece : "{"Referência de objeto não definida para uma instância de um objeto."}". Já utilizei o mesmo codigo em outros form e funciona perfeitamente porem nesse form nao funciona! o codigo é esse..
private void Atualizar_Click(object sender, EventArgs e)
{
//se nao for selecionado nenhuma placa acontece isso
if (dtClientes.SelectedCells.Count <= 0)
{
MessageBox.Show("Nenhuma cliente foi selecionado.", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else if (dtClientes.SelectedCells.Count > 0)
{
if (dtClientes.CurrentRow.Cells[3].Value.ToString() != "Física")
{
// ir para proxima pagina realizar alteracao dos dados
tbClientes.SelectedIndex = 1;
Registrar.Visible = false;
Salvar.Visible = true;
//placa selecionada
Rua.Text = dtClientes.CurrentRow.Cells[0].Value.ToString();
}
}
}Alguem poderia me ajudar! Agradeço desde já
Respostas
-
Se este grid é editável, e o valor desta célula foi editado imediatamente antes do click no botão, pode ser que o valor da célula ainda não foi atualizado de fato. Neste caso, no início do evento você poderia adicionar o código dtClientes.EndEdit();. Se não for este o caso, informe mais algum detalhe sobre como este grid funciona na sua aplicação, para entendermos melhor o cenário.
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 24 de abril de 2017 12:02
Todas as Respostas
-
Olá!
Esta mensagem está sendo exibida porque não há valor na currentrow na posição 0. Você conferiu se havia uma linha selecionada, mas isto não garante que haverá valor na célula. Para evitar o erro você pode escrever o código da seguinte forma (caso não queira verificar antes se existe valor na célula):
Rua.Text = dtClientes.CurrentRow?.Cells[0]?.Value?.ToString() ?? "";
Bom trabalho!
- Editado Rodrigo CdS segunda-feira, 17 de abril de 2017 18:05
-
-
Se este grid é editável, e o valor desta célula foi editado imediatamente antes do click no botão, pode ser que o valor da célula ainda não foi atualizado de fato. Neste caso, no início do evento você poderia adicionar o código dtClientes.EndEdit();. Se não for este o caso, informe mais algum detalhe sobre como este grid funciona na sua aplicação, para entendermos melhor o cenário.
- Marcado como Resposta Robson William SilvaModerator segunda-feira, 24 de abril de 2017 12:02
-
Esse Datagrid nao é editável, ele so apresenta as informacões do cliente! porem ao clicar na linha do cliente as informacões do mesmo tende a preencher os campos de textbox com as informacões cadastradas!!
codigo:
private void Atualizar_Click(object sender, EventArgs e)
{
//se nao for selecionado nenhuma placa acontece isso
if (dtClientes.SelectedCells.Count <= 0)
{
MessageBox.Show("Nenhuma cliente foi selecionado.", "ERRO", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
// ir para proxima pagina realizar alteracao dos dados
tbClientes.SelectedIndex = 1;
Registrar.Visible = false;
Salvar.Visible = true;
//placa selecionada
Rua.Text = dtClientes.CurrentRow.Cells[0].Value.ToString();
}
} -
Bom dia Guilherme,
Conseguiu resolver este problema?
Atenciosamente,
Robson William Silva
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.