Usuário com melhor resposta
Atribuir valores para uma Dropdownlist

Pergunta
-
Olá Pessoal,
Estou usando uma esquema de cascading em dropdownlist através de Jquery. O processo está tudo certo para inserção, porém, quando preciso efetuar um update e necessito atribuir valores para estas dropdowlist encontro um grande problema porque as dropdownlist não possuem valores.
Estou utilizando este exemplo para efetuar tudo o processo. http://www.aspsnippets.com/Articles/AJAX-Cascading-DropDownList-using-jQuery-in-ASP.Net.aspx
Estou usando este esquema para popular as dropdownlists.
SqlConnection conpai = new SqlConnection();
conpai.ConnectionString = ConfigurationManager.ConnectionStrings["PROJETOALConnectionString"].ConnectionString;
string querypai = "select PAIS.ID, esta.id, muni.id from PCLIENTE cli, PRAMOATIVIDADE RAMO, PMUNICIPIO MUNI, PESTADO ESTA, PPAIS PAIS where CLI.IDPRAMOATIVIDADE = RAMO.ID AND CLI.IDPMUNICIPIO = MUNI.ID AND MUNI.IDPESTADO = ESTA.ID AND ESTA.IDPPAIS = PAIS.ID AND cli.ID = @codigo";
SqlCommand cmdpai = new SqlCommand(querypai, conpai);
cmdpai.Parameters.AddWithValue("@codigo", txt_codigo_cli.Text);
try
{
conpai.Open();
SqlDataReader dr = cmdpai.ExecuteReader();
if (dr.Read())
{
ddlContinents.DataTextField = "NOME";
ddlContinents.DataValueField = "ID";
ddlContinents.SelectedValue = dr[0].ToString();
ddlCountries.DataTextField = "ESTADO";
ddlCountries.DataValueField = "ID";
ddlCountries.SelectedValue = dr[1].ToString();
ddlCities.DataTextField = "NOME";
ddlCities.DataValueField = "ID";
ddlCities.SelectedValue = dr[2].ToString();
}
dr.Close();
}
catch (SqlException ex)
{
//ex.Message
}
catch (Exception ex)
{
//verificar exceção
}
finally
{
conpai.Close();
}
Alguém sabe o que eu poderia fazer para popular essas dropdownlist?
Respostas
-
- Marcado como Resposta Alysson Queiroz segunda-feira, 9 de setembro de 2013 19:55
Todas as Respostas
-
Lucas no link de exemplo que você passou o exemplo atribui o DataSource, o TextField, o ValueField e dá um Bind() no dropdown para que ele ai sim carregue os valores.
Pode ser que sua combo esteja com vazia devido a isso.
Se ajudou marque.
Abras Good Luck
-
-
Lucas, está muito estranho isso, você falando assim a impressão que dá é que a lista de estados esta vindo vazia do seu banco de dados.
Se o seu select está englobando tudo, e os países são carregados, era para os estados também estarem funcionando normalmente.
E dando mais uma olhada no link que você passou, percebi que o select é feito separadamente para as partes.
Você já tentou ver se não pode ser isso?
Abras
-
Como você está fazendo para popular esses dropdownlist's?!
Nessa query que você passou, você possui o valor do estado e município que deve ser selecionado. Até ai, me parece correto. Porém, quando abre a página, os dropdownlist's são carregados corretamente?
Obs.: Esses comandos geralmente, são realizados antes do DataBind
ddlContinents.DataTextField = "NOME";
ddlContinents.DataValueField = "ID";
ddlCountries.DataTextField = "ESTADO";
ddlCountries.DataValueField = "ID";
ddlCities.DataTextField = "NOME";
ddlCities.DataValueField = "ID";
- Editado Claudio V. G. Neto quinta-feira, 5 de setembro de 2013 19:29
-
Estou usando assim:
//*******************************************************************
//CHAMA A FUNÇÃO QUE IRÁ POPULAR O DROPDOWNLIST PAIS, ESTADO E CIDADES
this.PopulateContinents();
//*******************************************************************Logo após:
//**************************************************************************************************************
//SELECIONA OS DADOS DO PAIS ( SELECT - ATRIBUI VALOR AO CAMPO PAIS)
if (txt_operacao.Text == "1")//se o processo for de atualização
{
SqlConnection conpai = new SqlConnection();
conpai.ConnectionString = ConfigurationManager.ConnectionStrings["PROJETOALConnectionString"].ConnectionString;
string querypai = "select PAIS.ID, esta.id, muni.id from PCLIENTE cli, PRAMOATIVIDADE RAMO, PMUNICIPIO MUNI, PESTADO ESTA, PPAIS PAIS where CLI.IDPRAMOATIVIDADE = RAMO.ID AND CLI.IDPMUNICIPIO = MUNI.ID AND MUNI.IDPESTADO = ESTA.ID AND ESTA.IDPPAIS = PAIS.ID AND cli.ID = @codigo";
SqlCommand cmdpai = new SqlCommand(querypai, conpai);
cmdpai.Parameters.AddWithValue("@codigo", txt_codigo_cli.Text);
try
{
conpai.Open();
SqlDataReader dr = cmdpai.ExecuteReader();
if (dr.Read())
{
ddlContinents.DataTextField = "NOME";
ddlContinents.DataValueField = "ID";
ddlContinents.SelectedValue = dr[0].ToString();
ddlCountries.DataTextField = "ESTADO";
ddlCountries.DataValueField = "ID";
ddlCountries.SelectedValue = dr[1].ToString();
ddlCities.DataTextField = "NOME";
ddlCities.DataValueField = "ID";
ddlCities.SelectedValue = dr[2].ToString();
}
dr.Close();
}
catch (SqlException ex)
{
//ex.Message
}
catch (Exception ex)
{
//verificar exceção
}
finally
{
conpai.Close();
}
}
//**************************************************************************************************************
PORÉM, VISUALIZEI QUE OS SCRIPTS DO JAVA SCRIPT ESTÃO BLOQUEANDO EU POPULAR O SEGUNDO (ESTADO) E O TERCEIRO (CIDADES) DROPDOWNLIST, UMA VEZ QUE, O DROPDOWNLIST (PAISES) ESTÁ SENDO POPULADO NORMALMENTE, VEJA ABAIXO OS SCRIPTS EM JAVA SCRIPT:
<%--**************************************************************--%>
<%--//SCRIPT QUE POPULA O DROPDOWNLIST PAISES--%>
<%--POPULAR PAISES--%>
<script type="text/javascript">
var pageUrl = '<%=ResolveUrl("~/cad_cliente_js.aspx")%>'
function PopulateContinents() {
$("#<%=ddlCountries.ClientID%>").attr("disabled", "disabled");
$("#<%=ddlCities.ClientID%>").attr("disabled", "disabled");
if ($('#<%=ddlContinents.ClientID%>').val() == "0") {
$('#<%=ddlCountries.ClientID %>').empty().append('<option selected="selected" value="0">Please select</option>');
$('#<%=ddlCities.ClientID %>').empty().append('<option selected="selected" value="0">Please select</option>');
}
else {
$('#<%=ddlCountries.ClientID %>').empty().append('<option selected="selected" value="0">Loading...</option>');
$.ajax({
type: "POST",
url: pageUrl + '/PopulateCountries',
data: '{continentId: ' + $('#<%=ddlContinents.ClientID%>').val() + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnCountriesPopulated,
failure: function (response) {
alert(response.d);
}
});
}
}
function OnCountriesPopulated(response) {
PopulateControl(response.d, $("#<%=ddlCountries.ClientID %>"));
}
</script>
<%--**************************************************************--%>
<%--*****************************************************************--%>
<%--//SCRIPT QUE POPULA A DROPDOWNLIST CIDADES--%>
<%--POPULAR CIDADES--%>
<script type="text/javascript">
function PopulateCities() {
$("#<%=ddlCities.ClientID%>").attr("disabled", "disabled");
if ($('#<%=ddlCountries.ClientID%>').val() == "0") {
$('#<%=ddlCities.ClientID %>').empty().append('<option selected="selected" value="0">Please select</option>');
}
else {
$('#<%=ddlCities.ClientID %>').empty().append('<option selected="selected" value="0">Loading...</option>');
$.ajax({
type: "POST",
url: pageUrl + '/PopulateCities',
data: '{countryId: ' + $('#<%=ddlCountries.ClientID%>').val() + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnCitiesPopulated,
failure: function (response) {
alert(response.d);
}
});
}
}
function OnCitiesPopulated(response) {
PopulateControl(response.d, $("#<%=ddlCities.ClientID %>"));
}
</script>
<%--**************************************************************--%>
<%--***************************************************************--%>
<%--//SCRIPT POPULA O CONTROLE DROPDOWNLIST--%>
<script type="text/javascript">
function PopulateControl(list, control) {
if (list.length > 0) {
control.removeAttr("disabled");
control.empty().append('<option selected="selected" value="0">Please select</option>');
$.each(list, function () {
control.append($("<option></option>").val(this['Value']).html(this['Text']));
});
}
else {
control.empty().append('<option selected="selected" value="0">Not available<option>');
}
}
</script>
<%--*********************************************************************--%>
-
- Marcado como Resposta Alysson Queiroz segunda-feira, 9 de setembro de 2013 19:55