Usuários mais ativos no mês 11/2019
  1. henrique.muller

    843 Pontos

  2. paulo.silva

    831 Pontos

  3. maicon.pereira

    582 Pontos

  4. juliano.pezzini

    388 Pontos

  5. leandro.piscke

    371 Pontos

  6. dirceu.schlickmann

    347 Pontos

  7. diuari.molinari

    331 Pontos

  8. Camila

    288 Pontos

  9. bruno.cardoso

    273 Pontos

  10. Rafael Leonhardt

    256 Pontos

Comportamento de sobrecarga de métodos de entidade em visões pelo CodeBehind

+2 votos
21 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.

perguntou Out 29 por alan.jantz (100 pontos)
Parece que o comportamento não está correto, seria legal depurar o código e entender o que está acontecendo.

Entre para responder esta pergunta.

Perguntas relacionadas

+1 voto
1 resposta 16 visitas
+1 voto
1 resposta 12 visitas
12 visitas perguntou Out 23 por alan.jantz (100 pontos)
+7 votos
1 resposta 43 visitas
+3 votos
1 resposta 18 visitas
18 visitas perguntou Ago 30 por michael.prust (23 pontos)
...