SelectedValue pegando valor selecionado incorreto
11/02/2020
0
Bom dia pessoal
Tenho uma combo de empresa que ao ser selecionada preenche a combo dimensão, neste caso o selectedValue pega o valor correto da empresa selecionada e pega o valor 0 para a dimensão(ou seja não pega o valor selecionado), este é o primeiro caso e ocorre erro. Já em um outro relatório não tenho o filtro empresa filtrando dimensão, ou seja, a dimensão é carregada direto e neste caso o valor selecionado na dimensão é pego corretamente.
Vamos ao código que dá erro:
Componentes criados Empresa e Dimensão:
<asp:Label ID="lblEmpresas" runat="server" ClientIDMode="Static">Empresa:</asp:Label>
<asp:DropDownList ID="ddlFiltroEmpresa" runat="server" ClientIDMode="Static" onChange="javascript:carregaFiltros();">
</asp:DropDownList>
<asp:Label ID="lblDimensoes" runat="server" ClientIDMode="Static">Dimensão: <asp:DropDownList ID="ddlFiltroDimensao" runat="server" ClientIDMode="Static" onChange="javascript:carregaAspectoFiltro();carregaIndicadorFiltro();">
Funções JavaScript chamadas:
function carregaFiltros() { if ($(''#ddlFiltroEmpresa'').val() != null) { carregaDimensaoFiltro(); }
carregaAspectoFiltro();
carregaIndicadorFiltro();
}
function carregaDimensaoFiltro() {
if ($(''#ddlFiltroEmpresa'').val() == null) {
empresa = codEmpresaSelecionada;
}
else {
empresa = $(''#ddlFiltroEmpresa'').val();
}
$.ajax({
type: ''GET'',
url: ''frmRelatorioFinal.aspx/carregaComboDimensaoComFiltro'',
contentType: ''application/json; charset=utf-8'',
data: {
codEmpresa: empresa,
codCiclo: $(''#ddlCiclo'').val()
},
success: function (response) {
$(''#ddlFiltroDimensao'').empty();
response.d.forEach(function (dimensao) {
addItem(dimensao.codigo, dimensao.descricao, "ddlFiltroDimensao");
});
addItem(0, "Todos", "ddlFiltroDimensao");
$(''#ddlFiltroDimensao option[value=0]'').attr(''selected'', ''selected'');
},
error: function (error) {
console.log(error);
alert(error + "erro carregaAspectoDimensao");
}
});
}
O erro ocorre do lado do servidor:
protected void funcaoGerarRelatorio() { Int32? filtroEmpresa, filtroDimensao, filtroAspecto, filtroIndicador;
filtroEmpresa = getFiltroDDL(ddlFiltroEmpresa.SelectedValue);
// O erro ocorre na linha abaixo apenas quando tenho que selecionar a empresa, pois esta filtra as dimensões. Aqui é passado o valor 0 para o SelectedValue ( da dimensão, a empresa o valor é pego direitinho)como se não tivesse selecionado nada. Do lado cliente pego o valor correto da dimensão e do lado servidor pego 0
// O mais impressionante que quando tenho um relatório que não tem a combo empresa , ou seja, é preenchida a combo dimensão sem filtro, neste caso o código entra nesta mesma função sendo que pega o valor correto selecionado na combo dimensão e depois filtra um outro combo, mas os valores são passados corretamente.
filtroDimensao = getFiltroDDL(ddlFiltroDimensao.SelectedValue);
//Acrescentado para teste
int cboIndex = ddlFiltroDimensao.SelectedIndex;
string strId = ddlFiltroDimensao.Items[cboIndex].ToString();
//fim do teste
filtroAspecto = getFiltroDDL(ddlFiltroAspecto.SelectedValue);
filtroIndicador = getFiltroDDL(ddlFiltroIndicador.SelectedValue);
Na minha opinião como depurando do lado cliente pego corretamente o código da dimensão e no servidor pego 0 como se nada tivesse sido selecionado, parece ser algum problema de atualização.
Desde já agradeço a ajuda.
Flávia
Tenho uma combo de empresa que ao ser selecionada preenche a combo dimensão, neste caso o selectedValue pega o valor correto da empresa selecionada e pega o valor 0 para a dimensão(ou seja não pega o valor selecionado), este é o primeiro caso e ocorre erro. Já em um outro relatório não tenho o filtro empresa filtrando dimensão, ou seja, a dimensão é carregada direto e neste caso o valor selecionado na dimensão é pego corretamente.
Vamos ao código que dá erro:
Componentes criados Empresa e Dimensão:
<asp:Label ID="lblEmpresas" runat="server" ClientIDMode="Static">Empresa:</asp:Label>
<asp:DropDownList ID="ddlFiltroEmpresa" runat="server" ClientIDMode="Static" onChange="javascript:carregaFiltros();">
</asp:DropDownList>
<asp:Label ID="lblDimensoes" runat="server" ClientIDMode="Static">Dimensão: <asp:DropDownList ID="ddlFiltroDimensao" runat="server" ClientIDMode="Static" onChange="javascript:carregaAspectoFiltro();carregaIndicadorFiltro();">
Funções JavaScript chamadas:
function carregaFiltros() { if ($(''#ddlFiltroEmpresa'').val() != null) { carregaDimensaoFiltro(); }
carregaAspectoFiltro();
carregaIndicadorFiltro();
}
function carregaDimensaoFiltro() {
if ($(''#ddlFiltroEmpresa'').val() == null) {
empresa = codEmpresaSelecionada;
}
else {
empresa = $(''#ddlFiltroEmpresa'').val();
}
$.ajax({
type: ''GET'',
url: ''frmRelatorioFinal.aspx/carregaComboDimensaoComFiltro'',
contentType: ''application/json; charset=utf-8'',
data: {
codEmpresa: empresa,
codCiclo: $(''#ddlCiclo'').val()
},
success: function (response) {
$(''#ddlFiltroDimensao'').empty();
response.d.forEach(function (dimensao) {
addItem(dimensao.codigo, dimensao.descricao, "ddlFiltroDimensao");
});
addItem(0, "Todos", "ddlFiltroDimensao");
$(''#ddlFiltroDimensao option[value=0]'').attr(''selected'', ''selected'');
},
error: function (error) {
console.log(error);
alert(error + "erro carregaAspectoDimensao");
}
});
}
O erro ocorre do lado do servidor:
protected void funcaoGerarRelatorio() { Int32? filtroEmpresa, filtroDimensao, filtroAspecto, filtroIndicador;
filtroEmpresa = getFiltroDDL(ddlFiltroEmpresa.SelectedValue);
// O erro ocorre na linha abaixo apenas quando tenho que selecionar a empresa, pois esta filtra as dimensões. Aqui é passado o valor 0 para o SelectedValue ( da dimensão, a empresa o valor é pego direitinho)como se não tivesse selecionado nada. Do lado cliente pego o valor correto da dimensão e do lado servidor pego 0
// O mais impressionante que quando tenho um relatório que não tem a combo empresa , ou seja, é preenchida a combo dimensão sem filtro, neste caso o código entra nesta mesma função sendo que pega o valor correto selecionado na combo dimensão e depois filtra um outro combo, mas os valores são passados corretamente.
filtroDimensao = getFiltroDDL(ddlFiltroDimensao.SelectedValue);
//Acrescentado para teste
int cboIndex = ddlFiltroDimensao.SelectedIndex;
string strId = ddlFiltroDimensao.Items[cboIndex].ToString();
//fim do teste
filtroAspecto = getFiltroDDL(ddlFiltroAspecto.SelectedValue);
filtroIndicador = getFiltroDDL(ddlFiltroIndicador.SelectedValue);
Na minha opinião como depurando do lado cliente pego corretamente o código da dimensão e no servidor pego 0 como se nada tivesse sido selecionado, parece ser algum problema de atualização.
Desde já agradeço a ajuda.
Flávia
Flavia Lares
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)