| ♥ 0 | Boas tardes. Estou a começar a usar bastante as CustomTabs mas tenho sentido algumas dificuldades em ter os “eventos” necessários. Pelo que vejo: uiFichaClientesCustomTab_Load() -> dispara quando o utilizador ativa a CustomTab pela primeira vez uiFichaClientesCustomTab_Loading() -> dispara quando os dados são carregados, por exemplo, load de um cliente uiFichaClientesCustomTab_Saving() -> dispara quando os dados são gravados
Ora, se usarmos por exemplo uma Combox onde temos de carregar os itens da ComboBox, onde deve ser isto feito? Se for no evento uiFichaClientesCustomTab_Load() os items da ComboBox vão ser carregados quando o utilizador ativa a CustomTab, ou seja, funciona para Novos clientes ou Edição de clientes *mas* apenas se o utilizador clicar na Tab. Se o utilizador faz load de um cliente *antes* de ativar a Tab vai falhar pois o evento _Load() ainda não foi executado. Se passar a tarefa de carregar os itens das ComboBox para o evento uiFichaClientesCustomTab_Loading() ai fica OK para a Edição de clientes mas *não* para Novos clientes pois o evento uiFichaClientesCustomTab_Loading() só é executado quando se está a carregar um cliente existente. Já o uiFichaClientesCustomTab_Initializing() é executado “sempre” mas nessa altura o this.ContextService.Cliente ainda é null pelo que não dá para ser usado neste caso. Qual a maneira “correta” de fazer isto? Como é que eu carrego os itens de uma ComboBox sempre que, neste caso, a Ficha de Cliente é aberta?
Outra situação e esquecendo por momento a dificuldade acima explicada. Imaginemos que o utilizador está a editar um Cliente e todos os dados foram carregados na CustomTab corretamente. Se o utilizador Gravar o cliente então podemos usar o uiFichaClientesCustomTab_Saving() para gravar os CDUs e posteriormente “limpar” os campos. Por Exemplo: private void uiFichaClientesCustomTab_Saving()
{
BasBECliente cliente = this.ContextService.Cliente;
cliente.CamposUtil["CDU_Administrador"].Valor = cbAdministrador.SelectedValue;
cbAdministrador.SelectedIndex = -1;
}Mas imaginemos que em vez de o utilizador Gravar clica em Novo – como é que agora limpo os campos que foram previamente carregados? Espero ter sido claro.
Marcado como spam |
| Resposta privada Hmm OK mas o uiFichaClientesCustomTab_Load() é disparado quando o utilizador carrega na tab pela primavera vez. Se eu carregar os dados dos objectos (ComboBox) no uiFichaClientesCustomTab_Load() mas o utilizador editar uma entidade sem clicar na dita tab a coisa não corre bem pois todas as ComboBox vão estar vazias nesse momento. Tenho andado a pensar em alternativas e creio que algo do género no uiFichaClientesCustomTab() funcionaria this.ContextService.AntesDeCriar += ParentForm_Load; Infelizmente falha pois o AntesDeCriar é um método.
Por sua vez this.ParentForm.Load += ParentForm_Load; funciona bem mas aqui não temos todos os eventos necessários. Consegues imaginar alguma hipotecasse de fazer isto trabalhar com o que temos? Marcado como spam | |
| Resposta privada Olá a questão está bem colocada e começando já pelo ultima não estou a ver forma de forma de ultrapassar pois não temos evento para para isso. Assim na minha opinão no Load devem ser carregados todos os dados de todos os objetos, até por uma questão de performance se deve usar esta opção. No evento Loading() devem ser carregados os dados associado à entidade, como por exempo os CDU's. Marcado como spam |