+2 votos
43 visitas

Há uma página especializada com CodeBehind e um widget de formulário. A tabela (física) possui uma entidade com userinterface para change de um determinado campo.

No OnInit da página há um a delegação de métodos para o formulário supracitado:

protected override void OnInit(EventArgs e)
{
	base.OnInit(e);
	formLancamentoCC.GetEntityMethod = GetEntityMethodImplLancamentoCC;
	formLancamentoCC.CreateEntityMethod = CreateEntityMethodImplLancamentosCC;
	formLancamentoCC.SaveEntityMethod = SaveEntityMethodImplLancamentoCC;
	formLancamentoCC.DeleteEntityMethod = (EntityBase entity) => { };
	formLancamentoCC.CommandExecute += formLancamentoCC_CommandExecute;
}

Quando crio um novo registro, o método CreateEntityMethodImplLancamentosCC é chamado:

    private EntityBase CreateEntityMethodImplLancamentosCC(EntityViewBase entityView, NameValueDictionary suggestedValues, TransitoryData transitoryData)
    {
        suggestedValues = FNLancamentoCC.SugereValoresCamposCC(suggestedValues, formLancamentos.GetEntity());
        var entity = Entity.Create(entityView, suggestedValues, ObterParametrosEntidadeCC());
        return entity;
    }

Quando eu mudo o valor de algum campo que é afetado pelo userinterface (um método é chamado no FieldChanged), o CodeBehind passa novamente pelo CreateEntityMethodImplLancamentosCC.

Desta forma, o valor do campo que foi informado é sobrescrito pelo suggestedValues, nunca deixando eu realizar a alteração dele.

Quando não há userinterface, o mesmo não ocorre. O comportamento dele passar novamente no CreateEntityMethod é correto?

Observações:

O formulário que apresenta o problema é formLancamentoCC, a página também possui um formLancamento, que é passado por parâmetro no FNLancamentoCC.SugereValoresCamposCC. O método ObterParametrosEntidadeCC apenas cria uma nova instância de Benner.Tecnologia.Common.TransitoryData.

fechada com o comentário: Não mais necessário.
por (145 pontos)
republicada por | 43 visitas
Parece que o comportamento não está correto, seria legal depurar o código e entender o que está acontecendo.

Consegue anexar a stack trace da execução do evento CreateEntityMethodImplLancamentosCC ?

Perguntas relacionadas

+1 voto
1 resposta
+1 voto
1 resposta
perguntado 23 Out, 2019 por alan.jantz (145 pontos) | 32 visitas
+7 votos
1 resposta
+4 votos
2 respostas
perguntado 20 Dez, 2019 por tamiris.lima (17 pontos) | 62 visitas
423 perguntas
470 respostas
342 comentários
466 usuários