none
Criar um formulário padrão de cadastro RRS feed

  • Pergunta

  • Bom dia,

    Estou com a seguinte dúvida, na aplicação que estou desenvolvendo haverá vários cadastros, por exemplo: Cliente, Fornecedor, Produto, etc.

    Em outros projetos (que não eram web) eu usava um formulario padrão, com os botões Salvar / Editar / Cancelar / Editar, além de componentes e métodos que seriam iguais para todos os cadastros e depois usava esse form para desenvolver os cadastros, herdando desse form padrão.

    Eu queria saber se existe como fazer isso em Asp.net, eu procurei mas não achei nada do tipo por enquanto.

    Obrigado,

    Adriano

    terça-feira, 6 de março de 2012 12:49

Todas as Respostas

  • Voce pode usar heranca em asp net usando master page:

    ASP.NET 2.0 - Herança visual com Master Page

    Se tiver dificuldades em fazer ou alguma dúvida, poste ai.

    Thread: http://social.msdn.microsoft.com/Forums/pt-BR/aspnetpt/thread/0625a387-221f-48b5-80c5-5a78e252248a/


    Consultoria .NET
    ANALISTA DESENVOLVEDOR
    Se esta sugestão for útil, por favor, classifique-a como útil.
    Se ela lhe ajudar a resolver o problema, por favor, marque-a como resposta.
    Blog .Net Descomplicado

    terça-feira, 6 de março de 2012 13:06
  • Obrigado,

    Eu li e estou tentando usar Master Page, porém fiquei com algumas dúvidas:

    - Eu consegui acessar propriedades e controles da master page na página do conteúdo (eu dei uma lida nisso aqui: http://www.devmedia.com.br/master-pages-e-content-pages/7635), até aí tudo bem, mas tem como fazer o processo inverso, ou seja, na Master definir por exemplo que um TextBox vai receber o valor da página de conteúdo ?

    Seria mais ou menos como uma Interface ou classe abstrata, eu defino que vai ter um método:

    string PreencherTextBox();

    Na Master, que a página que herdar terá que implementar, então la no PageLoad da Master eu coloco:

    textBoxQualquer.Text = PreencherTextBox(); //Esse método estaria implementado na página de conteúdo...

    Isso só para exemplificar, o que quero dizer e se tem alguma forma de forçar as pagínas de conteúdo (filhas) a implementar determinados métodos para que eu possa fazer uma estrutura lógica na Master Page.

    Obrigado.
    • Editado Adriano Pires terça-feira, 6 de março de 2012 19:44 link
    terça-feira, 6 de março de 2012 19:43
  • Atualizando...

    Bom, nesse meio tempo eu consegui fazer mais ou menos o que eu queria e vou dividir com vocês, porém eu queria a opinião de vocês para saber se isso que eu fiz pode gerar problemas ou é muito gambiarra:

    - Na Master Page tenho o botão OK com validações padrões para todos os web forms filhos...

            protected void btnOK_Click(object sender, EventArgs e)
            {
                if (PodeSalvar) //Isso é uma validação de exemplo
                    // Aqui ele chama o OK do form filho
                    internalOK(sender, e);
            }

    - Para chamar esse evento OK do filho fiz o seguinte, na Master Page tenho uma propriedade privada do tipo EventHandler que pode ser setado no método público sobreporOK:

            private EventHandler internalOK;
    
            public void sobreporOK(EventHandler evento)
            {
                internalOK += evento;
            }

    Na página filha estou criando um EventHandler na mão com as rotinas especificas do cadastro e usando o método sobreporOK no Page_Load para repassar esse evento para a MasterPage:

            protected void Page_Load(object sender, EventArgs e)
            {
                Master.sobreporOK(btnOK_onClick);
            }
    
            private void btnOK_onClick(object sender, EventArgs e)
            {
                //Método que salva o objeto no banco 
                Salvar(cliente);            
            }

    Com isso ele executa a rotina da MasterPage e a da página filha (se for validado, já que o evento da filha só é disparado quando atende as condições).

    Deu para entender a lógica? Dessa forma é gambiarra? Tem algum problema ou da para usar assim mesmo?



    terça-feira, 6 de março de 2012 21:24