Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DaniloTec

[Resolvido] Controloes de formulário em classe.

Recommended Posts

Boa tarde gente.

Fiz uma classe para formulário com os controles que serão mais usados no sistema. Dentre eles, tenho um controle do tipo DropDownList que carrega os processos de contratação.

Segue o método que cria o DDL:

public DropDownList ddlTipoProcesso(){
   string[] tipoProcessoText = new string[] { "Interno", "Externo", "Misto" };
   DropDownList ddlTipoProcesso = new DropDownList();
   ddlTipoProcesso.ID = "ddlTipoProcesso";
   ddlTipoProcesso.DataSource = tipoProcessoText;
   ddlTipoProcesso.DataBind();
   ddlTipoProcesso.Items.Insert(0, new ListItem("Selecione...", ""));
   return ddlTipoProcesso;
}
Ele cria certinho, mas quando eu coloco um DDL no aspx e copio o controle do método para ele não dá certo:

ddlProcesso.Controls.Add(objForm.ddlTipoProcesso());
O erro é:

'System.Web.UI.WebControls.DropDownList' does not allow child controls.

 

Como eu coloco o controle que eu criei na classe na página aspx?

 

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Danilo pela nomeclatura que você postou esse ddlProcesso deve ser um dropdownlist, é? e um drop não aceita adicionar um controle a ele.

Então pra adicionar você tem que fazer assim NomeDoSeuWebForm form.Controls.Add(ddlTipoProcesso());

Compartilhar este post


Link para o post
Compartilhar em outros sites

É um DropDownList sim.

Já tinha tentado isso, Ivan e funciona. O problema é que quando eu adiciono um controle a uma Label, por exemplo, eu não consigo criar um RequiredFieldValidator para este controle, entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, na verdade estou tentando fazer com que um controle RequeredFieldValidator reconheça o controle ddlProcesso.

Se eu criar o objeto Formulário e chamar o método ddlProcesso() ele cria o controle, mas não atrela o RequeredFieldValidator para ele. É como se não houvesse esse controle na página aspx, entende?

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Este ddlProcesso que eu criei em uma classe acrescenta um DropDonwList com as opções de processos no formulário de cadastro. O ddlProcesso deste cadastro é de preenchimento obrigatório e por isso coloquei o RequeredFieldValidator.

Mas o RequeredFieldValidator não funciona, porque não existe o DropDonwList de processo na aspx. O DropDonwList de processo está na classe e só aparece no código cs quando eu adiciono o controle em uma td, por exemplo.

tdProcesso.Controls.Add(ddlProcesso());
O RequeredFieldValidator não reconhece o DropDonwList de processo, ou seja o ddlProcesso. Entendeu?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que já saquei sua dúvida, na verdade o dropdownlis esta sendo adicionado dinamicamente e ao tentar colocar um RequeredFieldValidator ele não encontra o drop pq ainda não foi adicionado, é isso?

 

Se for, creio que você resolve seu problema adicionando o RequeredFieldValidator dinamicamente também!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Legal, funcionou!

Crio os dois dinamicamente e atribuo os controles em Labels diferentes.

Ficou assim na classe Formulario:

    private string _idRfv;
    private string _idControle;
    private string _msgErro;

    private string IdRfv{ get { return this._idRfv; } set { this._idRfv = value; } }
    private string IdControle { get { return this._idControle; } set { this._idControle = value; } }
    private string MsgErro { get { return this._msgErro; } set { this._msgErro = value; } }

    public RequiredFieldValidator rfv(string idRfv, string idControle, string msgErro)
    {
        this.IdRfv = idRfv;
        this.IdControle = idControle;
        this.MsgErro = msgErro;

        RequiredFieldValidator rfvProcesso = new RequiredFieldValidator();
        rfvProcesso.ControlToValidate = this.IdControle;
        rfvProcesso.ErrorMessage = this.MsgErro;
        rfvProcesso.ID = this.IdRfv;
        return rfvProcesso;
    }

Depois eu atribuo os controles:

//CERREGA OS CONTROLES DO FORMULÁRIO
Formulario objForm = new Formulario();
lblProcesso.Controls.Add(objForm.ddlTipoProcesso());
lblDepartamento.Controls.Add(objForm.ddlDepartamento());
lblEscolaridade.Controls.Add(objForm.ddlEscolaridade());

//CARREGA OS CONTROLES DE VALIDAÇÃO PARA O TIPO PROCESSO
lblRfvProcesso.Controls.Add(objForm.rfv("rfvProcesso", "ddlTipoProcesso", "*"));
lblRfvDepartamento.Controls.Add(objForm.rfv("rfvDepartamento", "ddlDepartamento", "*"));

Eu estou utilizando o conceito de OOP e por isso gostaria da opinião de vocês sobre o que eu fiz.

Estou seguindo os padrões corretos de OOP?

 

Vlw gente!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.