Ir para conteúdo

POWERED BY:

Arquivado

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

DaniloTec

Como criar uma classe para formulário.

Recommended Posts

Bom dia gente.

O sistema que estou desenvolvendo possui dezenas de formulários e muitos destes formulários possuem campos repetidos, por exemplo um dropdownlist de estados.

Criei uma classe para os formulários e nela eu crio um método ddlEstado e chamo-o toda vez que precisar mostra-lo na página.

public DropDownList ddlEstado() {
		string[] estados = new string[] { "","AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "RJ", "PA", "PB", "PE", "PI", "PR", "RN", "RO", "RR", "RS", "SC", "SP" };
		DropDownList ddlEstado = new DropDownList();
		ddlEstado.CssClass = "form1";
		ddlEstado.ID = "ddlEstado";
		ddlEstado.DataSource = estados;
		ddlEstado.DataBind();
		return ddlEstado;
	}
E chamo dessa forma:

Formulario objForm = new Formulario();
lblEstado.Controls.Add(objForm.ddlEstado());
Até aí tudo bem. O problema é que existe um formulário de cadastro onde se o usuário já tiver o cadastro preenchido o formulário é carregado com as informações dele e eu não consigo chamar o objeto ddlEstado.SelectValue na página para atribuir o valor.

Como eu faço manipular os values do ddl quando ele está em uma classe?

Vlw!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala aí,

 

se entendi bem você quer exibir o valor que o usuario se cadastrou, porem dando a chance dele modificar o mesmo.

 

Se for isso segue o codigo:

ListItem li;		
		li = ddlt02_cd_usuario.Items.FindByValue("campodobanco");
		if (li != null) li.Selected = true;
você poem isso na sua classe, assim sempre que for editar, você vai recuperar o valor cadastrado.

 

 

Abraço e sucesso!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, Yslladd.

Não consegui fazer isso na classe por 2 motivos:

1 - Na classe eu não consigo enxergar o DataReader com o nome do campo;

2 - Apesar do dropdownlist ter um id eu não consigo utilizar na página, pelo fato de ele estar em uma classe.

 

Se eu colocasse o controle dentro da página funcionaria numa boa, o problema é que vou ter uns 8 ou 9 formulários com este campo e seria ótimo tê-lo num único lugar e poder só chamar o método que o constrói.

 

Vlw! http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já tentou assim?

Formulario objForm = new Formulario();
DropDownList ddl = objForm.ddlEstado();
ddl.SelectedValue = "SC";
lblEstado.Controls.Add(ddl);

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca ele dentro de namespaces

:(

 

Você já tentou assim?

Formulario objForm = new Formulario();
DropDownList ddl = objForm.ddlEstado();
ddl.SelectedValue = "SC";
lblEstado.Controls.Add(ddl);
Oenning, quando eu faço isso ele exibe o seguinte erro:

Multiple controls with the same ID 'ddlEstado' were found. FindControl requires that controls have unique IDs.

 

No page load eu já carrego o controle:

Formulario objForm = new Formulario();
lblEstado.Controls.Add(objForm.ddlEstado(""));
Passo vazio como parâmetro porque pode ser a primeira vez que o usuário está acessando a página, ou seja, não tem nada cadastrado no banco de dados.

Mas caso ele já possua um cadastro eu seleciono o valor na base e preciso atribuir no DDL:

Formulario objForm = new Formulario();
lblEstado.Controls.Add(objForm.ddlEstado(dr["campoEstado"].toString()));
E é aí que ele diz que não pode ter dois ou mais controles com o mesmo id, entende?

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.