none
Problema em retornar valor para função javascript RRS feed

  • Pergunta

  • Não sei se consigo explicar a dúvida, já que vai ficar difícil enviar todo o CF para vocês, mas vou tentar com o que eu tenho. O problema acontece em uma função JS que tenho. Ela recebe um parâmetro do Code Behind. Tive que alterar a função para ajustar à minha necessidade. Essa alteração, foi um IF que receberia dois parâmetros, ou um ou outro, nunca ambos. Bem, o parâmetro que já funcionava continua funcionando, mas o novo não funciona, ele dá o erro de: Valor is undefined. Valor é a variável que recebe o cara e quando ela não recebe, dá esse erro, que significa que a variável é null, sem nada. Estou postando o CF do JS e do CB. Quando ele chama doACAOMENUNFI é que dá pau. doACAOMENU é semelhante a doACAOMENUNFI, apenas com nomes diferentes, mas é a mesma função e ela funciona. É a mesma coisa, retirei para não ficar um post linguiça. O segredo está em OpenActions.

    var actionID = "";

    var actionsMenu = "";

    var actionElement = null;

    function OpenActions(s, e) {   

    if (cbAcoes.InCallback())       

    return;   

    if (actionID != s.uniqueID || actionsMenu == "")

    {       

    actionElement = s;       

    actionID = s.uniqueID;       

    cbAcoes.PerformCallback(e);    }   

    else       

    doACAOMENU();

    }

    function ActionOnCompleteCallBack(s, e) {   

    actionsMenu = e.result;

    }

    function ActionOnEndCallBack(s, e) {   

    if (actionsMenu == 'cpItens')       

    doACAOMENU();   

    else if(actionsMenu == 'cpItensNFI')       

    doACAOMENUNFI();}

    function doACAOMENUNFI() {   

    if (actionsMenu != "") {       

    for (ix = 0; ix < apmItensNFI.GetItemCount(); ix++) {           

    mni = apmItensNFI.GetItem(ix);           

    mni.SetVisible(false);       

    }       

    if (actionsMenu == 'NOK_rejeitado') {           

    alert('Verificar motivo da rejeição no Portal de Serviços da operadora.');           

    actionsMenu = "";            return;        }       

    if (actionsMenu == 'NOK_EmAnalise') {           

    alert('A operadora ainda não finalizou a análise dessa conta.');           

    actionsMenu = "";            return;        }       

    str = actionsMenu.split(',');       

    console.log(str);       

    param = cbAcoes.cpPARAM;       

    console.log(param);               

    var valor = "";       

    for (ix = 0; ix < str.length; ix++) {           

    console.log(ix);           

    mni = apmItensNFI.GetItemByName(str[ix]);           

    console.log(mni);           

    mni.SetVisible(true);           

    console.log(str[ix]);           

    valor = eval("cbAcoes." + str[ix]);           

    mni.SetNavigateUrl(valor.replace("{0}", param));        }       

    if (actionElement != null)           

    apmItensNFI.ShowAtElement(actionElement);       

    else           

    apmItensNFI.ShowAtElementByID(actionID);    }

    }

    function oncloseMenu(s, e) {   

    actionElement = null;   

    actionID = "";

    }

    function VisualizarItens(s, e) {   

    param = cbAcoes.cpPARAM;   

    cbpPainelControle.PerformCallback('VisualizarItens_' + param);

    }



    Aqui está o meu call_back para o cbAcoes.

    protected void cbAcoes_Callback(object source, DevExpress.Web.ASPxCallback.CallbackEventArgs e)       

    {           

    string _tipo = null;           

    string GuiaPrest = null;           

    string _codItemNFI = null;           

    DataTable dtContaGuia = null;           

    if (_filtroSelecionado == enFiltroPesquisa.NotaFiscal)           

    {               

    //Tipo Nota fiscal               

    _tipo = "N";               

    _codItemNFI = e.Parameter.ToString();           

    }           

    else           

    {               

    //Tipo outros               

    _tipo = "O";               

    GuiaPrest = e.Parameter.ToString();           

    }           

    // Recupera a configuracao do menu inicializado no método InicializaMenuAcoes()           

    if (menus == null && ViewState["menuAcao"] != null)               

    menus = (NameValueCollection)ViewState["menuAcao"];           

    String[] AcaoMenu = null;           

    string resultado = null;           

    switch (_tipo)           

    {               

    case "N":                   

    dtContaGuia = DAL_Pesquisa.getStatusItemNFI_Menu(_codItemNFI);                   

    break;               

    case "O":                   

    dtContaGuia = DAL_Pesquisa.getStatusGuiaPrestador_Menu(GuiaPrest);                   

    break;           

    }                        

    if (dtContaGuia != null && dtContaGuia.Rows.Count > 0)           

    {               

    if (dtContaGuia.Rows[0]["COD_STATUS_CONCILIA"].ToString().Equals("6"))                   

    resultado = "NOK_EmAnalise";               

    else if (dtContaGuia.Rows[0]["COD_STATUS_CONCILIA"].ToString().Equals("7"))                   

    resultado = "NOK_rejeitado";                               

    else if(_tipo == "O")                       

    AcaoMenu = new String[] { "cpItens" };                     

    else if(_tipo == "N")                       

    AcaoMenu = new String[] { "cpItensNFI" };            }           

    else               

    throw new ApplicationException("A operadora não finalizou a análise dessa conta."); 

    StringBuilder sbmenu = new StringBuilder();           

    cbAcoes.JSProperties.Clear();           

    if (AcaoMenu != null)           

    {               

    foreach (String key in AcaoMenu)               

    {                   

    sbmenu.AppendFormat(",{0}", key);                   

    cbAcoes.JSProperties.Add(key, menus[key]);               

    }               

    e.Result = sbmenu.ToString().Substring(1);               

    switch (_tipo)               

    {                   

    case "N":                       

    cbAcoes.JSProperties.Add("cpPARAM", _codItemNFI);                       

    break;                   

    case "O":                       

    cbAcoes.JSProperties.Add("cpPARAM", GuiaPrest);                       

    break;               

    }           

    }           

    else           

    {               

    e.Result = resultado;               

    cbAcoes.JSProperties.Add("cpPARAM", null);           

    }       

    }         

    No page load eu chamo esse cara
    private void InicializaMenuAcoes()
            {
                menus = new NameValueCollection();
                apmContasGuias.Items.Clear();
                apmItensNFI.Items.Clear();

                AddMenuItemNFIAcoes("cpItensNFI", "Visualizar Itens", "javascript:ConteudoItem();");
                AddMenuContasGuiasAcoes("cpItens", "Visualizar Itens", "javascript:VisualizarItens();");

                ViewState["menuAcao"] = menus;
            }

    ConteudoItens e VisualizarItens são submétodos de um call_back, o principal(mas não é o cbAcoes_Callback)

     protected void cbpPainelControle_Callback(object sender, CallbackEventArgsBase e)
            {
                if (e.Parameter.Contains("VisualizarConta"))
                {
                    string id = e.Parameter.Substring((e.Parameter.LastIndexOf('_')) + 1);
                    CarregaContasGuia(Ametista.CodigoStatusConciliacao.ContasPorMotivoGlosa, id);

                    return;
                }

                if (e.Parameter.Contains("VisualizarItens"))
                {
                    pagContas = gvContasGuias.PageIndex;
                    string idGuiaPres = e.Parameter.Substring((e.Parameter.LastIndexOf('_')) + 1);
                    ListaDetalhesConta(idGuiaPres, false);
                    return;
                }

                if (e.Parameter.Contains("ConteudoItem"))
                {
                    pagContas = gvItemNotaFiscal.PageIndex;
                    string idItem = e.Parameter.Substring((e.Parameter.LastIndexOf('_')) + 1);
                    ListaDetalhesContaNFI(idItem, false);
                    return;
                }
    continua mais métodos nesse callback
    Se precisar mais informações, favor me avisar, senão fica uma linguiça enorme e até ruim de ler

    Existe alguma forma de colocarmos em uma tag code o nosso código e já inserir arrumado, porque quando eu faço isso, vem tudo na mesma linha, sem alinhamento, há como ou tenho que fazer sempre assim, vir arrumando linha a linha e fica feio.

    segunda-feira, 7 de outubro de 2013 12:41

Todas as Respostas