Usuário com melhor resposta
[Resolvido] Inserir valor do banco na tag select

Pergunta
-
Olá,
Estou iniciando em C# e tenho que fazer algumas mudanças em um WebForm (estou utilizando SQL Client): Eu tenho uma tag select que lista os estados e uma outra com suas cidades através de Jquery.
Este é o fluxo:
A pessoa preenche o formulário e eu gravo no banco. Na próxima vez que ela acessa o website, ela é redirecionada para uma página onde há apenas um textbox pra preencherem seu cpf. Se este cpf existir no banco, eu a redireciono para a página do formulário populando-o com os valores resgatados do banco.
Tudo isto está feito, mas estou tendo problemas para colocar o valor do banco na tag select. Se eu coloco runat="server" nela, quando a pessoa clica nesse select, ele não carrega mais a lista de estados.
No code behind, estou resgatando a opção selecionada assim:
string uf = Request.Form["ddlUF"];
Na página .aspx:
< select id="ddlUF" name="ddlUF" style="width: 60px">< / select>
Sugestões para lidar com isso? (Se puderem colocar o código inteiro, ficaria muito agradecida, pois ainda estou iniciando em C#)
==>Funções Jquery:
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~") %>Scripts/jquery-1.9.1.min.js"></script>
<script type="text/javascript" src="<%= Page.ResolveClientUrl("~") %>Scripts/apoio.js"></script><script type="text/javascript">
$(document).ready(function () { var listItems = ""; for (var i = 0; i < estados.length; i++) { listItems += "<option value='" + estados[i] + "'>" + estados[i] + "</option>"; } $("#ddlUF").html(listItems); }); $(function () { $("#ddlUF").change(function () { var uf = $(this).val(); var listItems = ""; for (var i = 0; i < estados_municipios[uf].length; i++) { listItems += "<option value='" + estados_municipios[uf][i] + "'>" + estados_municipios[uf][i] + "</option>"; } $("#ddlMunicipio").html(listItems); }); }); function uf_Validate(source, args) { var uf = $("#ddlUF").val(); args.IsValid = ((uf) && uf.length == 2); }
</script>
- Editado qazaq_ sábado, 7 de setembro de 2013 02:22
Respostas
-
Meu formulário tem uma masterPage, e eu descobrí que quando o código se encontra dentro de um ContentPlaceHolder e você uma runat="server", o nome do controle muda e por isso o javascript não o encontra. Resolví o assunto fazendo duas tabelas, uma para cidade e outra pra estado, e colocando na minha página .aspx uma dropDownList comum.
- Marcado como Resposta Giovani CrModerator quarta-feira, 11 de setembro de 2013 19:27
Todas as Respostas
-
-
-
Olá qazaq_, tudo certo brother, espero que sim.
Segue sua solução:
//Este é o metodo que carrega uma lista do banco de dados, coloca na posição
//zero da lista a informação "Selecione:", e depois disso carrega do banco
//os outros registros para completar sua lista.
private void CarregarSexo(Int32 sexo_)
{
var listaSexo = new List<TB_SEXO>();
using (var conexao = new SISCONTATOSEntities())
{
listaSexo = conexao.TB_SEXO.ToList();
listaSexo.Insert(0, new TB_SEXO{ID_SEXO = 0, DS_SEXO = "Selecione: "});
}
//Depois de configurar os sexos na memoria
//Vamos descer pra tela atraves de um ViewBag
//Passamos 4 parametros pra dentro da classe SELECT LIST
//1 - Passamos a coleção de registros que veio da TB
//2 - Passamos o campo que é CHAVE (ID, VALUE)
//3 - Passamos o campo que é texto (DESCRIÇÃO)
//Vai vir selecionada, ele seleciona de acordo com
//O Value, de acordo com o campo que é chave(ID_SEXO)
ViewBag.Sexo = new SelectList(listaSexo, "ID_SEXO", "DS_SEXO", sexo_);
}Na sua View (Tela, Pagina HTML, aspx, asp e etc...) deve ficar assim:
// @Html.DropDownList("selectSexo", ViewBag.Sexo as SelectList, new {@class = "Lista"})
// O trecho de código acima é uma html helper, neste caso é uma lista, ou a tag select <div> <label for="selectSexo">Sexo:</label><br /> @*Criamos uma lista de sexos carregando a partir do viewbag como o viewbag trabalha com informações do tipo DYNAMIC, fomos obrigados a colocar a tipagem*@ @Html.DropDownList("selectSexo", ViewBag.Sexo as SelectList, new {@class = "Lista"}) </div>
A unica diferença é que estou usando a Engine Razor, por isso o "@" na frente do codigo, no seu caso"<%%> "
Fora isso é tudo Visual C#.
Se te ajudei responda, se não ajudei pergunte novamente, estamos aqui para ajudar.
Participem do Maior e Melhor grupo de .Net do Brasil
LGroup Desenvolvimento e Treinamento
Valeu.
Anderson Anzileiro
- Sugerido como Resposta Anderson Anzileiro domingo, 25 de agosto de 2013 22:27
- Editado Anderson Anzileiro segunda-feira, 26 de agosto de 2013 02:05
-
-
Não é uma dropdownlist, é uma tag select do html. Sendo assim, não tem AutoPostBack. Talvez se desse para inserir o valor default pelo code behind por asp clássico.. ... Mas eu não sei como--> Note que a pessoa que resgatou o valor escolhido, resgatou pelo código
string uf = Request.Form["ddlUF"];
- Editado qazaq_ terça-feira, 27 de agosto de 2013 00:04
-
Desculpe minha ignorância, mas você tá usando MVC razor com entity e eu estou usando uma tag select do html com Sql Client, o que são bem diferentes. Não sei o suficiente pra converter os padrões que você está usando com os que eu estou. Poderia postar como ficaria na tag select de modo que não impacte nas funções Jquery?
Obrigada
- Editado qazaq_ terça-feira, 27 de agosto de 2013 00:09
-
Meu formulário tem uma masterPage, e eu descobrí que quando o código se encontra dentro de um ContentPlaceHolder e você uma runat="server", o nome do controle muda e por isso o javascript não o encontra. Resolví o assunto fazendo duas tabelas, uma para cidade e outra pra estado, e colocando na minha página .aspx uma dropDownList comum.
- Marcado como Resposta Giovani CrModerator quarta-feira, 11 de setembro de 2013 19:27