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.