Inquiridor
ErrorProvider com um DataSet

Pergunta
-
Pessoal, possuo um Windows Forms, que tem um BindingNavigator e os controles TextBox. Busquei por vários sites na web, como fazer a validação dos textbox direto pelo dataset tipado, mas não consegui nada que realmente pudesse me auxiliar. Alguém tem algum exemplo ou link onde eu possa ver como validar um windows form com binding usando um ErrorProvider ?
Grato
Everton
Todas as Respostas
-
Everton,
Para usar o ErrorProvider, você pode fazer o seguinte:
Coloque um controle ErrorProvider no seu form e no evento Validating do TextBox, coloque o código abaixo.
private
void textBox1_Validating(object sender, CancelEventArgs e)
{
if (textBox1.Text != "TESTE")
{
errorProvider1.SetError(textBox1, "Valor inválido");
}
else
{
errorProvider1.SetError(textBox1, "");
}
}[]s,
Carlos. -
Everton,
Você pode fazer isso dentro do arquivo .vb do DataSet tipado. Veja um exemplo:
Procure a palavra ErrorProvider.
http://msdn2.microsoft.com/en-us/library/ms379590(vs.80).aspx
http://msdn2.microsoft.com/en-us/library/ms379590(vs.80).aspx#newdtastvs05_topic4 -
Oi Leonardo, o artigo é ótimo, me ajudou bastante, até a conseguir novas informações. Vou testar o new dele, mas encontrei um código para o RowChangeEvent, ele passa por lá quando chama o EndEdit, porém a execução não pára e ele segue para o update, causando e exceção, sem exibir o erro no ErrorProvider.. Eu uso C# e o código tem que ser criado todo, ele não cria automaticamente.. Agradeço desde já o apoio.
Abraço
-
-
Não sei em que ponto você está quando ele gera a exceção, mas você poderia propagar a exceção e na sua rotina que chama o Update trata-la mostrando o erro com o ErrorProvider. Infelizmente essa semana estou sem o VS.NET aqui e não vou poder testar isso, mas em casa vou fazer um teste.
-
-
-
Que bom. Agora uma outra dúvida. Fui debugar e notei que quando o dataset é carregado, ou a edição é concluída, ou qualquer evento que trabalhe com os dados, o evento de RowChange é disparado.. É possível existir um monte de if para constatação de erros. Em uma base grande, isso pode degradar... tem como limitar os ifs só quando realmente houver alteração nos dados que o usuário efetivamente acessa ? Eu vi que tem a propriedade Action, que vem pelo evento. Vi vários valores possíveis ali.. Se eu limitar os ifs apenas quando a action for Add, ele executa quando o dataset é populado e quando adiciona um novo registro, e se eu coloco change ? Só as mudanças ? O que sugere ?
Abraço
-